如何用c ++代码解决这个cmake问题?

时间:2015-07-21 11:00:47

标签: c++ cmake

我用cmake编译了程序.cmakelist.txt:

<wsdl-uri-scheme>https</wsdl-uri-scheme>

问题是在我的文件夹/clusteringmaster/build/CMakeFiles/2.8.12.2/我有两个文件夹CompilerIdC和CompilerIdCXX,它们都有exe文件.As Sergey指出exe应该位于bin目录中。当我列出我的CmakeFile

cmake_minimum_required (VERSION 2.6) 
project (clustering)

IF(CMAKE_SIZEOF_VOID_P EQUAL 4)
    SET(LIB_SUFFIX "")
ELSE(CMAKE_SIZEOF_VOID_P EQUAL 4)
    SET(LIB_SUFFIX 64)
ENDIF(CMAKE_SIZEOF_VOID_P EQUAL 4)

SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}")

find_package(Eigen2 REQUIRED)
include_directories(${Eigen2_INCLUDE_DIR})

if(NOT CMAKE_BUILD_TYPE)
  set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
      "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
      FORCE)
endif(NOT CMAKE_BUILD_TYPE)

if(CMAKE_BUILD_TYPE MATCHES "Debug")
    set(LIB_NAME clusteringd)
else(CMAKE_BUILD_TYPE MATCHES "Debug")
    set(LIB_NAME clustering)
endif(CMAKE_BUILD_TYPE MATCHES "Debug")

file(GLOB LIB_PUBLIC_HEADERS "${CMAKE_SOURCE_DIR}/*.h")
file(GLOB LIB_SOURCES "${CMAKE_SOURCE_DIR}/*.cpp")

#add_library (${LIB_NAME}-s STATIC ${LIB_PUBLIC_HEADERS} ${LIB_SOURCES})
add_library (${LIB_NAME} SHARED ${LIB_PUBLIC_HEADERS} ${LIB_SOURCES})

install(
    TARGETS ${LIB_NAME}
    LIBRARY DESTINATION lib${LIB_SUFFIX}
)

#install(
#    TARGETS ${LIB_NAME}-s
#    ARCHIVE DESTINATION lib${LIB_SUFFIX}
#)

install(
    FILES ${LIB_PUBLIC_HEADERS}
    DESTINATION include/${LIB_NAME}
)

来自作者教程

构建

2.8.12.2        cmake.check_cache                CMakeOutput.log  Makefile2       progress.marks
clustering.dir  CMakeDirectoryInformation.cmake  CMakeTmp         Makefile.cmake  TargetDirectories.txt

我应该写cmake - build / home / milenko / clusteing-master / release吗?

我之前没有和cmake合作过,我该怎么解决这个混乱?

1 个答案:

答案 0 :(得分:4)

一个项目应该使用cmake变量${PROJECT_NAME}作为add_library命令的目标名称。 (由于project (clustering)语句,您的项目名称被指定为“群集”。)要获得调试配置构建的d后缀,请使用set(CMAKE_DEBUG_POSTFIX d)。我还想使用

设置输出目录变量
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")

(我甚至会设置_DEBUG_RELEASE变体,但这可能会在您第一次开始时引起问题,所以我会在此之前等待。)