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

时间:2011-10-13 21:24:26

标签: c++ code-generation cmake ctest

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

我已经设置了CMake来构建生成器程序并为配置时指定的任何文件格式生成库。

现在,我想添加测试。这些测试与构建过程中已经完成的步骤相同 - 我必须在CTest脚本中重做这些步骤,还是有办法告诉ctest构建目标并捕获任何错误消息?

2 个答案:

答案 0 :(得分:3)

如果您使用的是最新版本的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。

答案 1 :(得分:0)

您是否尝试在enable_testing()文件中说CMakeLists.txt,然后致电add_test()制作测试目标?如果您按照CMake文档,我认为您可以在一个整合的构建脚本中执行所有操作。