gpt4 book ai didi

command-line - 如何在运行时在CTest中传递命令行参数

转载 作者:行者123 更新时间:2023-12-04 01:09:18 25 4
gpt4 key购买 nike

我正在使用CTest,并希望在运行时将命令行参数传递给基础测试。我知道有一些方法可以将命令行参数硬编码到CMake / CTest脚本中,但是我想在运行时指定命令行参数,并将那些参数通过CTest传递给基础测试。

这有可能吗?

最佳答案

我想出了一种方法(使用Fundamental theorem of software engineering)。这不是我想要的那么简单,但是就在这里。

首先,使用内容创建一个文件 $ {CMAKE_SOURCE_DIR} /cmake/RunTests.cmake

if(NOT DEFINED ENV{TESTS_ARGUMENTS})
set(ENV{TESTS_ARGUMENTS} "--default-arguments")
endif()
execute_process(COMMAND ${TEST_EXECUTABLE} $ENV{TESTS_ARGUMENTS} RESULT_VARIABLE result)
if(NOT "${result}" STREQUAL "0")
message(FATAL_ERROR "Test failed with return value '${result}'")
endif()

然后,当您添加测试时,请使用
add_test(
NAME MyTest
COMMAND ${CMAKE_COMMAND} -DTEST_EXECUTABLE=$<TARGET_FILE:MyTest> -P ${CMAKE_SOURCE_DIR}/cmake/RunTests.cmake
)

最后,您可以使用以下自定义参数运行测试

cmake -E env TESTS_ARGUMENTS="--custom-arguments" ctest

请注意,如果您使用bash,则可以简化为

TESTS_ARGUMENTS="--custom-arguments" ctest

这种方法存在一些问题,例如它忽略测试的 WILL_FAIL属性。当然,我希望它可以像调用 ctest -- --custom-arguments一样简单,但是正如 Stones所说的, You can't always get what you want一样。

关于command-line - 如何在运行时在CTest中传递命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28812533/

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