在我的 CMakeLists.txt 中我有这样的东西:
set_property(TEST testX APPEND PROPERTY DEPENDS testY)
set_property(TEST testX APPEND PROPERTY DEPENDS testZ)
我想要一些方法来自动运行 testX
及其所有依赖项。
像这样的东西:
ctest <options> testX
因此,CTest 将运行 textY
、testZ
和 testX
。
有什么办法吗?
或者,如果现在不可能,有没有办法通过脚本从CMake构建目录中提取依赖信息?
最佳答案
在 CMake 3.7 中添加了对测试装置的支持,它们完全可以满足您的需求。您的特定场景将像这样实现:
set_property(TEST testX PROPERTY FIXTURES_REQUIRED Foo)
set_property(TEST testY PROPERTY FIXTURES_SETUP Foo)
set_property(TEST testZ PROPERTY FIXTURES_SETUP Foo)
然后你可以要求 ctest
只运行 testX
,它会自动将 testY
和 testZ
添加到要执行的一组测试:
ctest -R testX
它还将确保 testX
仅在通过 testY
和 testZ
后运行。如果 testY
或 testZ
中的任何一个失败,将跳过 testX
。新选项-FS
、-FC
和-FA
也被添加到CMake 3.9 中的ctest
中,允许自动添加fixture setup/cleanup 测试在 ctest
命令行进行控制。例如,要暂时跳过将 testY
添加到测试集但仍自动添加 testZ
,可以这样做:
ctest -R testX -FS testY
灯具属性在 CMake docs 中进行了描述下面的文章更全面地介绍了 fixtures 特性:
https://crascit.com/2016/10/18/test-fixtures-with-cmake-ctest/
关于c++ - CMake 和 CTest : automatically run test's dependencies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30808963/