我目前正在构建一个带有插件结构的项目。我正在使用CMake编译项目。这些插件在单独的目录中编译。我的问题是,CMake编译和保存二进制文件和插件,动态库,在源代码的目录结构。我如何让CMake保存文件在一个类似。/bin目录?
当前回答
对于我来说,我使用的是cmake 3.5,下面(设置变量)不起作用:
set(
ARCHIVE_OUTPUT_DIRECTORY "/home/xy/cmake_practice/lib/"
LIBRARY_OUTPUT_DIRECTORY "/home/xy/cmake_practice/lib/"
RUNTIME_OUTPUT_DIRECTORY "/home/xy/cmake_practice/bin/"
)
但这是有效的(set set_target_properties):
set_target_properties(demo5
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "/home/xy/cmake_practice/lib/"
LIBRARY_OUTPUT_DIRECTORY "/home/xy/cmake_practice/lib/"
RUNTIME_OUTPUT_DIRECTORY "/home/xy/cmake_practice/bin/"
)
其他回答
使用以下行配置:
集(EXECUTABLE_OUTPUT_PATH $ {PROJECT_SOURCE_DIR} /构建/) 放置任何CMakeLists.txt项目。
这个${PROJECT_SOURCE_DIR}是项目所在的当前源目录。 如果想知道为什么是${EXECUTABLE_OUTPUT_PATH},检查这个文件CMakeCache.txt,然后搜索关键字输出路径,所有变量都定义在这里,它会给出项目所有设置的完整解释。
cat CMakeLists.txt
project (hello)
set(CMAKE_BINARY_DIR "/bin")
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
add_executable (hello hello.c)
使用EXECUTABLE_OUTPUT_PATH CMake变量设置所需的路径。详细信息请参考CMake在线文档:
CMake 2.8.8文档
对于我来说,我使用的是cmake 3.5,下面(设置变量)不起作用:
set(
ARCHIVE_OUTPUT_DIRECTORY "/home/xy/cmake_practice/lib/"
LIBRARY_OUTPUT_DIRECTORY "/home/xy/cmake_practice/lib/"
RUNTIME_OUTPUT_DIRECTORY "/home/xy/cmake_practice/bin/"
)
但这是有效的(set set_target_properties):
set_target_properties(demo5
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "/home/xy/cmake_practice/lib/"
LIBRARY_OUTPUT_DIRECTORY "/home/xy/cmake_practice/lib/"
RUNTIME_OUTPUT_DIRECTORY "/home/xy/cmake_practice/bin/"
)
$ cat CMakeLists.txt
project (hello)
set(EXECUTABLE_OUTPUT_PATH "bin")
add_executable (hello hello.c)
推荐文章
- 为什么我的程序不能在Windows 7下用法语编译?
- 如何获取变量的类型?
- 什么是奇怪的重复模板模式(CRTP)?
- 连接两个向量的最佳方法是什么?
- 在c++中,是通过值传递更好,还是通过引用到const传递更好?
- 在STL中deque到底是什么?
- Windows上最好的免费c++分析器是什么?
- 如何自动转换强类型枚举为int?
- 在一个类中使用具有成员函数的泛型std::function对象
- 'for'循环中的后增量和前增量产生相同的输出
- 虚函数和纯虚函数的区别
- c++中的_tmain()和main()有什么区别?
- 内存泄漏是否正常?
- 当启用c++ 11时,std::vector性能回归
- 什么时候使用哪种指针?