在CMakeLists.txt文件中,永久替换特定项目的ctest命令为"ctest --output-on-failure"。

18

我发现通用的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
< p>在set_property中的标记无法正常工作。


6
通过设置环境变量CTEST_OUTPUT_ON_FAILURE也可以启用此选项。 - Nicolas Holthaus
1
@NicolasHolthaus 我该如何在CMakeLists.txt中永久设置 CTEST_OUTPUT_ON_FAILUREtrue?只需要一个简单的set命令吗? - Blizzard
1
非常感谢你的帮助,Nicolas!我最终添加了自定义目标“make check”。 - Blizzard
2个回答

24
在CMake 3.17 发布说明 中,有一个新的变量CMAKE_CTEST_ARGUMENTS,你可以设置它来传递任何命令行参数给CTest,包括--output-on-failure。在你的特定情况下,你现在可以简单地将它添加到你的CMakeLists.txt中:
list(APPEND CMAKE_CTEST_ARGUMENTS "--output-on-failure")

8

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接