Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CMake:将可执行文件写入多个子目录_Cmake - Fatal编程技术网

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目录的当前值。这一事实可以在about
RUNTIME\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
中,我以为我已经试过了,但很明显我弄糟了什么。这正是我需要的。非常感谢。