CMake:将可执行文件写入多个子目录
我有一个源代码和构建树,看起来像这样:CMake:将可执行文件写入多个子目录,cmake,Cmake,我有一个源代码和构建树,看起来像这样: +-build/ +-bin/ +-modules/ +-src/ +-tests/ +-test1/ +-test2/ 我还将CMake配置为将可执行文件写入build/bin目录。一切正常 我希望将大多数可执行文件写入build/bin目录,而从测试目录下的源代码生成的可执行文件则写入build/bin/tests目录 这可能吗?有人能给我指出正确的方向吗 我尝试过直接设置RUNTIME\u OUTPUT\u目录变量,也尝
+-build/
+-bin/
+-modules/
+-src/
+-tests/
+-test1/
+-test2/
我还将CMake配置为将可执行文件写入
build/bin
目录。一切正常
我希望将大多数可执行文件写入build/bin
目录,而从测试目录下的源代码生成的可执行文件则写入build/bin/tests
目录
这可能吗?有人能给我指出正确的方向吗
我尝试过直接设置RUNTIME\u OUTPUT\u目录
变量,也尝试过使用set\u target\u属性
,但没有成功
理想情况下,我希望能够在
tests
目录中的CMakeLists.txt文件中设置一些内容,并将其滴入子目录。您可以根据需要多次将CMAKE\u RUNTIME\u OUTPUT\u目录
变量设置为。每个设置只影响自该设置起创建的可执行文件,直到下一个设置为止
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
# Futher executables will be placed under 'bin/'
add_executable(my_program <sources>...)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/tests)
# Futher executables will be placed under 'bin/tests/' instead
add_executable(test1 <sources>...)
add_executable(test2 <sources>...)
测试/CMakeLists.txt:
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
# Futher executables will be placed under 'bin/'
add_executable(my_program <sources>...)
add_subdirectory(tests)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/tests)
# Executables created below will be placed under 'bin/tests/' instead
add_executable(test1 <sources>...)
add_executable(test2 <sources>...)
set(CMAKE_运行时_输出_目录${CMAKE_二进制_目录}/bin/tests)
#下面创建的可执行文件将放在“bin/tests/”下
添加可执行文件(test1…)
添加可执行文件(test2…)
实际上,当您调用
add\u executable
时,它只使用CMAKE\u RUNTIME\u OUTPUT\u目录的当前值。这一事实可以在aboutRUNTIME\u OUTPUT\u目录中找到,该目录受变量影响。“我还配置了CMake将可执行文件写入build/bin
目录。”-您是如何做到的?通常,类似的方法应该适用于将测试放入build/bin/tests
目录。变量CMAKE_RUNTIME_OUTPUT_目录
和属性RUNTIME_OUTPUT_目录
都应该可以工作。@Tsyvarev:我通过调用根级CMakeList.txt文件的set(CMAKE_RUNTIME_OUTPUT_目录${CMAKE_BINARY_DIR}/bin)
将可执行文件放置在build/bin
中,我以为我已经试过了,但很明显我弄糟了什么。这正是我需要的。非常感谢。