我目前正在构建一个带有插件结构的项目。我正在使用CMake编译项目。这些插件在单独的目录中编译。我的问题是,CMake编译和保存二进制文件和插件,动态库,在源代码的目录结构。我如何让CMake保存文件在一个类似。/bin目录?


当前回答

$ cat CMakeLists.txt
project (hello)
set(EXECUTABLE_OUTPUT_PATH "bin")
add_executable (hello hello.c)

其他回答

$ cat CMakeLists.txt
project (hello)
set(EXECUTABLE_OUTPUT_PATH "bin")
add_executable (hello hello.c)

再加上:

如果你正在使用CMAKE来生成Visual Studio解决方案,并且你希望Visual Studio将编译好的文件输出到/bin中,Peter的回答需要稍微修改一下:

# set output directories for all builds (Debug, Release, etc.)
foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )
    string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG )
    set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_SOURCE_DIR}/lib )
    set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_SOURCE_DIR}/lib )
    set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_SOURCE_DIR}/bin )
endforeach( OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES )

使用set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "/some/full/path/to/bin")

使用以下行配置:

集(EXECUTABLE_OUTPUT_PATH $ {PROJECT_SOURCE_DIR} /构建/) 放置任何CMakeLists.txt项目。

这个${PROJECT_SOURCE_DIR}是项目所在的当前源目录。 如果想知道为什么是${EXECUTABLE_OUTPUT_PATH},检查这个文件CMakeCache.txt,然后搜索关键字输出路径,所有变量都定义在这里,它会给出项目所有设置的完整解释。

使用EXECUTABLE_OUTPUT_PATH CMake变量设置所需的路径。详细信息请参考CMake在线文档:

CMake 2.8.8文档