我的项目目录包含一个CMakeLists.txt文件以及根目录下的src和include目录。src还包含自己的CMakeLists.txt,它由根目录中的一个链接起来。有没有一种方法可以指定CMake来设置默认的全局构建目录,从而使src/CMakeLists.txt中的语法接近于下面的语法?
include_directories(include)
add_executable(first main.cpp foo.cpp)
add_executable(second bar.cpp)我希望构建此目录树:
CMakeLists.txt
src/
CMakeLists.txt
main.cpp
foo.cpp
bar.cpp
include/
...
bin/ (or build/)
first
second发布于 2012-06-14 18:14:43
您可以设置CMAKE_RUNTIME_OUTPUT_DIRECTORY
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)但是,这不会在bin/中为每个不同的目标创建子目录。
如果需要,可以创建一个辅助函数来包装add_subdirectories
function(my_add_executable TargetName)
set(Files ${ARGV})
list(REMOVE_AT Files 0)
add_executable(${TargetName} ${Files})
set_target_properties(${TargetName} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY
"${CMAKE_SOURCE_DIR}/bin/${TargetName}")
endfunction()然后只需将您的调用更改为:
my_add_executable(first main.cpp foo.cpp)
my_add_executable(second bar.cpp)有关更多详细信息,请运行
cmake --help-variable "CMAKE_RUNTIME_OUTPUT_DIRECTORY"
cmake --help-property "RUNTIME_OUTPUT_DIRECTORY"
cmake --help-property "RUNTIME_OUTPUT_DIRECTORY_<CONFIG>"https://stackoverflow.com/questions/11027798
复制相似问题