我最近开始在我的一个多平台项目中使用CMake,但是我在弄清楚如何做某事时遇到了一些麻烦。
基本上,在项目中我有多个库和可执行文件,都在他们自己的文件夹中。我想将所有已编译的库放在构建的一个目录中,即CMake构建文件夹中的lib文件夹。我想为可执行文件做同样的事情。
CMake Build Directory
| ----------> bin (where i want the executables to go)
| ----------> lib (where i want the libraries to go)
| ----------> utils (where the libraries are ordinarily compiled)
| ----------> test (where the executables are ordinarily compiled)
在utils和apps中有一些目录,用于我正在制作的所有不同的库和可执行文件。我的源目录的基本文件夹中有一个CMakeLists,它添加了所有子目录。如果有什么不合理的话就随便问一下。
答案 0 :(得分:5)
您也可以使用:
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 )
答案 1 :(得分:3)
查看install CMake命令。
此页面的示例:
install(TARGETS myExe mySharedLib myStaticLib
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/static)
install(TARGETS mySharedLib DESTINATION /some/full/path)
因此您可以使用CMAKE_BINARY_DIR代替/ some / full / path
答案 2 :(得分:1)
此外,对于包括:
install( FILES ${HEADERS}
DESTINATION inc )
[当要安装的头文件集时]
install( DIRECTORY include/${PROJECT_NAME}/
DESTINATION inc)
[当要安装的标题目录时]