我发现通用的ctest
命令没有提供太多关于测试的信息,所以我想添加ctest --output-on-failure
,但用户不必担心标志。我希望他们只cmake
,make
项目并运行ctest,它应该运行带有--output-on-failure
标志的ctest。在CMakeLists.txt中可以做到这一点吗?
编辑:
env CTEST_OUTPUT_ON_FAILURE=1 make test
输出
4/13 Test #4: TEST_SSSP ........................***Failed Required regular expression not found.Regex=[CORRECT
] 0.00 sec
Loading Matrix-market coordinate-formatted graph ...
Input graph file /home/muhammad/gunrock/dataset/small/chesapeake.mtx does not exis
set_property(TEST TestName PROPERTY ENVIRONMENT "CTEST_OUTPUT_ON_FAILURE=1")
输出
4/13 Test #4: TEST_SSSP ........................***Failed Required regular expression not found.Regex=[CORRECT
] 0.00 sec
set_property
中的标志不起作用。
在CMake 3.17发行说明中,有一个新的变量CMake_CTEST_ARGUMENTS,您可以将其设置为向CTEST传递任何命令行参数,包括--output-on-failure
。在您的特定情况下,您现在可以简单地将其添加到您的CMakeLists.txt中:
list(APPEND CMAKE_CTEST_ARGUMENTS "--output-on-failure")
我使用了make check
每个解决方案:CMake:为ctest设置环境变量(或自动从ctest/make-test获得失败的测试输出)
add_custom_target(check ${CMAKE_COMMAND} -E env CTEST_OUTPUT_ON_FAILURE=1
${CMAKE_CTEST_COMMAND} -C $<CONFIG> --verbose
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})