我正在寻找与CMake测试(Ctest)集成的Catch CatchLib的成功示例。据我所知,这是额外的cmake脚本,它必须解析应用程序输出?是不是有人已经写好了?可能分享了这个?
==================================================
更新(已找到解决方案):
我已经将cmake script提交给了CatchLib,以实现与CTest的集成。这是Fraser99的cmake script here的简化版本
发布于 2016-01-20 20:24:41
将Catch与CMake集成相当简单,因为它是一个仅包含头的库。
下面是你必须做的事情的简要介绍:
您可以假定Catch源代码已经安装在构建机器上,或者在构建过程中使用ExternalProject来获取它们。
在这两种情况下,您最终都会在构建计算机上的某个已知目录中得到Catch头文件。我建议创建一个接口目标,让您的测试可执行程序知道这些信息:
add_library(Catch INTERFACE)
target_include_directories(Catch INTERFACE ${YOUR_CATCH_INCLUDE_DIR})这样,您就可以简单地将Catch指定为target_link_libraries的依赖项
add_executable(my_test ${MY_TEST_SOURCES})
target_link_libraries(my_test PUBLIC Catch)与通常的CMake一样,add_test负责将测试引入CTest:
enable_testing()
add_test(NAME MyAwesomeTest COMMAND my_test)这已经够了。在构建的项目上运行make test以运行您的测试。
如果您需要查看完整的工作示例,我有一个project on Github可以做到这一点。
Catch较新版本的更新:如果你已经升级到Catch2,该版本带有自己的包配置文件,所以你只需调用find_package就可以集成它。这提供了a smoother CMake integration overall,您不必开始定义自己的接口目标。虽然上面的方法仍然适用于Catch2,但如果您的Catch版本已经支持find_package,我建议您使用它。
发布于 2017-02-26 09:05:42
使用以下命令安装catch:
$ git clone https://github.com/catchorg/Catch2 <catch_src_dir>
$ mkdir <catch_bin_dir>
$ cd <catch_bin_dir>
$ cmake -DBUILD_TESTING:BOOL=FALSE <catch_src_dir>
$ make
$ make install然后将以下内容添加到CMakeLists.txt中:
find_package(Catch2 REQUIRED)
target_link_libraries(tests Catch2::Catch2)参见here。
https://stackoverflow.com/questions/34896891
复制相似问题