有没有办法,最好从CMakeLists.txt
到ctest
设置
页脚应显示在默认输出
下方The following tests FAILED:
76 - MyHardTest
Errors while running CTest
这具体化并概括了一个有点不明确的问题,该问题自2年多以来一直开放(CMakeLists.txt: How to print a message if ctest fails?)。因此,我担心没有简单的解决方案。
那么另一个问题是:CDash
可以实现理想的行为吗?
答案 0 :(得分:1)
是的,CTest确实有宏来实现这个[1]:
CTEST_CUSTOM_PRE_TEST
在测试阶段CTEST_CUSTOM_POST_TEST
在测试阶段要从cmake
激活这些宏以供ctest
使用,必须以某种方式将它们放入 build 目录中。看来,有两个步骤是必要的:
(1)在源代码树的某处有一个脚本scriptdir/CTestCustom.cmake.in
,其中包含
set(CTEST_CUSTOM_POST_TEST "echo AFTER_THE_TEST")
或其他任何命令而不是“echo”
(2)让CMakeLists.txt
致电
configure_file("scriptdir/CTestCustom.cmake.in" ${CMAKE_BINARY_DIR}/CTestCustom.cmake)
以便在配置阶段将CTest配置文件放在 build 目录中的首选名称[2] CTestCustom.cmake
下。
[1] https://cmake.org/Wiki/CMake/Testing_With_CTest [2] https://blog.kitware.com/ctest-performance-tip-use-ctestcustom-cmake-not-ctest/
答案 1 :(得分:0)
在我的研究过程中,我发现整合这样的东西非常困难。我不完全确定,但我相信您可以在CTestScript中执行此操作,然后创建add_custom_target
以始终允许该脚本使用ctest
执行。例如,命令make check
现在将使用您创建的CTestScript运行ctest
...太多工作了吗?
我能想到的应用程序的最简单方法是在顶部和底部添加两个空测试作为页眉和页脚的占位符。 Ctest已经有了“以下测试FAILED:”最终的输出类型,所以你可能不必担心它。任何类型的条件逻辑IF TEST FAILED DO THIS
,目前你无法在ctest中完成。
add_test(NAME HEADER_GOES_HERE)
add_test(NAME ACTUAL_TEST COMMAND test)
add_test(NAME FOOTER_GOES_HERE)
也许有人可以给你一个更好的答案,但这是我能想到的最简单(不是很好)的实现。