ctest只运行现有的测试



我的构建中有一些测试是可选的。我的CMakeLists.txt大致如下:

add_custom_target(all-tests)
add_executable(A ...)
add_dependencies(all-tests A)
add_test(NAME A COMMAND ...)
add_executable(B ...)
add_dependencies(all-tests B)
add_test(NAME B COMMAND ...)
## optional
add_executable(C EXCLUDE_FROM_ALL ...)
add_test(NAME C COMMAND ...)

我的想法是我可以运行

$ make all-tests
$ ctest

编译我所有的单元测试,然后运行它们。问题是,由于C是可选的,所以它不会构建(所有需要的(。由于它没有建立,它就不存在,并被报道为失败:

The following tests FAILED:
6 - C (Not Run)
Errors while running CTest

有没有办法忽略这个失败/让CTest不要尝试运行不存在的测试/以其他方式表达可选测试的想法?我有一类具有类似名称的可选测试,所以如果它们是构建的,那么能够使用ctest -R来运行它们会很好,而不必配置一些脚本或其他方法。

通过设置REQUIRED_FILES属性:,使可选测试取决于生成的测试可执行文件的存在

add_test(NAME C COMMAND ...)
add_executable(C EXCLUDE_FROM_ALL ...)
set_property(TEST C PROPERTY REQUIRED_FILES "$<TARGET_FILE:C>")

生成器表达式TARGET_FILE的使用需要CMake 3.0或更高版本。

相关内容

  • 没有找到相关文章

最新更新