gpt4 book ai didi

CMake - 如何创建可执行文件,但不添加到 "all"目标?

转载 作者:行者123 更新时间:2023-12-01 11:33:22 24 4
gpt4 key购买 nike

使用 CMake,我构建了一系列可执行文件,然后添加为测试,如下所示:

set(TestID 1)
add_executable (Test${TestID} Test${TestID}.cpp)

# Create test
configure_file(${TestID}.endf ${TestID}.endf COPYONLY)
add_test( NAME ${TestID} COMMAND Test${TestID} )

这工作正常 - 创建了可执行文件并正确添加了测试。但是,我不希望将测试可执行文件添加到 all目标。

与其将我的测试与其他所有内容一起构建,我希望它们在执行测试之前构建;也许作为 make test 的一部分或作为 ctest 的一部分.

我怎样才能做到这一点?

最佳答案

设置 EXCLUDE_FROM_ALL创建测试可执行目标时的标志以从 all 中排除目标目标:

add_executable (Test${TestID} EXCLUDE_FROM_ALL Test${TestID}.cpp)

确保在执行测试之前构建测试目标更加棘手。您不能向内置 test 添加依赖项目标与 add_dependencies ,因为 test目标属于一组保留目标(如 allclean 和其他一些),它们只存在于创建的构建系统中。

作为解决方法,您可以使用 TEST_INCLUDE_FILES directory 属性以在运行测试之前触发所需测试可执行文件的构建。创建文件 BuildTestTargets.cmake.in在具有以下内容的源目录中:
execute_process(COMMAND "@CMAKE_COMMAND@" --build . --target Test1)
execute_process(COMMAND "@CMAKE_COMMAND@" --build . --target Test2)

然后将以下代码添加到您的 CMakeLists.txt :
configure_file("BuildTestTargets.cmake.in" "BuildTestTargets.cmake")
set_directory_properties(PROPERTIES TEST_INCLUDE_FILES
"${CMAKE_CURRENT_BINARY_DIR}/BuildTestTargets.cmake")

然后 CTest 将包含并运行文件 BuildTestTargets.cmake作为运行测试之前的第一步。

关于CMake - 如何创建可执行文件,但不添加到 "all"目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30129636/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com