【发布时间】:2022-08-17 23:18:49
【问题描述】:
我在理解如何有效地将测试引入项目方面存在问题。我有代码,编译为ProjectMain 可执行文件,我想为它编写测试(编译为ProjectTest 可执行文件)。我想将测试与ProjectMain 的代码分开,所以文件结构如下:
Project
include
foo_class.h
src
foo_class.cpp
main.cpp
test
include
src
foo_class_test.cpp
<\"gtest_main\" is used, so no \"main.cpp\" here>
CMakeLists.txt
CMakeLists.txt
我如何将这两个 CMakeLists.txt 相互关联,以便每一个源文件只编译一次(当ProjectMain 和ProjectTest 都被编译时)?更准确地说,让ProjectTest 了解foo_class 实施的最佳方式是什么?
我可以将ProjectMain\ 的源添加到ProjectTest 目标,但这基本上意味着重新编译ProjectMain。更好的选择是将后者分成两部分:一个库,它包含它的所有代码库,以及一个仅具有main 函数的虚拟可执行文件。然后ProjectTest 只会链接到库,但我更愿意将ProjectMain 构建到单个文件中(仅限可执行文件)。
那么还有其他选择吗?或者,也许我错过了什么?也许我可以以某种方式指出ProjectTest 需要ProjectMain\ 的来源的CMake?
-
更好的选择就是最好的选择。
标签: c++ cmake googletest