Cmake /ctest:是否可以使用创建的构建目标作为测试

cmake/ctest: is it possible to use the creation of build targets as tests?

本文关键字:构建 目标 测试 创建 ctest 是否 可以使 Cmake      更新时间:2023-10-16

我有一个程序,它读取文件格式(ISO 10303-11)的描述,并从中生成c++。生成的代码被编译成一个库,该库与各种可执行文件链接以读取/写入该文件格式。

我有CMake设置构建生成器程序和生成库为任何文件格式在配置时指定。

现在,我想添加测试。这些测试与构建过程中已经完成的步骤相同—我是否必须在CTest脚本中重新执行这些步骤,或者是否有一种方法可以告诉CTest构建目标并捕获任何错误消息?

如果你使用的是最新的ctest版本(最新的官方版本是2.8.6),那么你可以使用add_test的NAME/COMMAND签名,结合cmake——build命令行选项,在你的构建树中构建特定的目标。

例如,假设有一个名为"tgt1"的自定义目标(或库或可执行目标):
add_test(NAME test.build.tgt1
  WORKING_DIRECTORY ${CMAKE_BINARY_DIRECTORY}
  COMMAND ${CMAKE_COMMAND} --build . --target tgt1 --config $<CONFIGURATION>
)

这可以跨平台使用相同的语法。它甚至可以与多配置生成器一起工作,如Visual Studio和Xcode。

您是否尝试过在CMakeLists.txt文件中说enable_testing(),然后调用add_test()来制作测试目标?如果你遵循CMake文档,我认为你可以在一个统一的构建脚本中做所有事情。