Mar*_*sen 161 c++ plugins cmake
我目前正在构建一个带有插件结构的项目.我正在使用CMake编译项目.插件在不同的目录中编译.我的问题是CMake在源的目录结构中编译并保存二进制文件和插件,动态库.如何使CMake将文件保存在类似./bin目录的文件中?
Ada*_*wen 262
正如在Oleg的回答中,我认为要设置的正确变量是CMAKE_RUNTIME_OUTPUT_DIRECTORY.我们在根CMakeLists.txt中使用以下内容:
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
Run Code Online (Sandbox Code Playgroud)
您还可以基于每个目标指定输出目录:
set_target_properties( targets...
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,你可以追加_[CONFIG]到变量/属性名称,使输出目录适用于特定的配置(配置标准值是DEBUG,RELEASE,MINSIZEREL和RELWITHDEBINFO).
Ole*_*leg 27
使用 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "/some/full/path/to/bin")
使用EXECUTABLE_OUTPUT_PATHCMake变量设置所需的路径.有关详细信息,请参阅在线CMake文档:
对我而言,我使用的是 cmake 3.5,以下(set variable)不起作用:
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/"
)
Run Code Online (Sandbox Code Playgroud)
但这有效(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/"
)
Run Code Online (Sandbox Code Playgroud)
$ cat CMakeLists.txt
project (hello)
set(EXECUTABLE_OUTPUT_PATH "bin")
add_executable (hello hello.c)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
155926 次 |
| 最近记录: |