15

我发现通用ctest命令没有提供太多关于测试的信息,所以我想添加ctest --output-on-failure但不让用户担心标志。我希望他们只是cmakemake项目并运行 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不起作用。

4

2 回答 2

17

在 CMake 3.17发行说明中,有一个新变量CMAKE_CTEST_ARGUMENTS可以设置为将任何命令行参数传递给 CTest,包括--output-on-failure. 在您的特定情况下,您现在可以简单地将其添加到您的 CMakeLists.txt 中:

list(APPEND CMAKE_CTEST_ARGUMENTS "--output-on-failure")
于 2020-02-19T15:15:36.027 回答
7

我选择了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})
于 2016-04-19T20:44:03.617 回答