用 cmake 分离 googletest 测试用例
Posted
技术标签:
【中文标题】用 cmake 分离 googletest 测试用例【英文标题】:separating googletest test cases with cmake 【发布时间】:2016-02-10 18:08:53 【问题描述】:我从事一个使用 CMake 构建的项目,该项目使用 Google 测试进行测试。我的测试的 CMakeLists.txt 文件如下所示:
add_executable(run_tests
testcase_a.cpp
dependency_a.cpp
testcase_b.cpp
dependency_b.cpp
)
target_link_libraries(run_tests gtest gtest_main)
随着测试用例数量的增加,这变得相当混乱。我想分别编译每个测试用例,然后使用单个二进制文件运行它们。这可以使用 CMake 和 gtest_main 来完成吗?或者有没有更好的方法可以做到这一点,我错过了?
【问题讨论】:
【参考方案1】:这是基本的想法:-
add_library(testcase_a.o OBJECT testcase_a.cpp dependency_a.cpp)
add_library(testcase_b.o OBJECT testcase_b.cpp dependency_b.cpp)
add_executable(run_tests $<TARGET_OBJECTS:testcase_a.o> $<TARGET_OBJECTS:testcase_b.o>)
target_link_libraries(run_tests gtest gtest_main)
见Object Libraries
【讨论】:
这看起来像是我需要的解决方案。但是,我无法正确链接 run_tests 可执行文件 - 库抱怨缺少对 gtest 函数的引用。 @Teyras 如果您可以为您的链接失败发布MVCE,也许我可以看到问题所在。现在只能说它对我有用。确保您已经使用与现在构建run_tests
的编译器完全相同的编译器构建了 libgtest 和 libgtest_main。
嗯,最小的设置似乎可以工作。我会将您的答案标记为正确,并尝试自己解决我的问题。以上是关于用 cmake 分离 googletest 测试用例的主要内容,如果未能解决你的问题,请参考以下文章
CMake GoogleTests 在我的测试文件中找不到导入的头文件