首先,您应该有一个专用文件main.cpp 用于您的main() 函数,其中不包含任何其他内容。
例如您的项目结构可能如下所示:
- 项目1
file1.h
file1.cpp
main.cpp
我对 gtest 并不熟悉,但通常单元测试框架有一个单独的文件用于 gtest 主函数,例如gtest_main.cpp。测试位于一个或多个文件中,例如 file1test.cpp 等。
因此,您将编译并链接您的 project1 与 file1.h、file1.cpp 和 main.cpp 以获得可执行文件。
对于单元测试,您将编译并链接 file1.h、file1.cpp、file1test.cpp 和 gtest_main.cpp 以获得单元测试可执行文件。
结构可能是这样的
- 项目1
file1.h
file1.cpp
main.cpp
- project1test
file1test.cpp
gtest_main.cpp
编辑有关链接的其他信息:
在 project1test 中,您将包含 file1.h 和 #include "../project1/file1.h"。
要正确链接,请右键单击project1test 项目
--> 配置属性--> 链接器--> 输入--> 附加依赖--> 添加“..\project1\Debug\file1.obj”
正如@Alan Birtles 指出的那样,如果你有以下结构会更清楚:
- project1 库
- 项目1申请
- project1test
file1test.cpp
gtest_main.cpp
您将获得一个静态/动态库project1library.lib/.dll、一个可执行文件project1application.exe 和一个单元测试可执行文件project1test.exe。
优点是您只需将单元测试项目中的库链接到
--> 配置属性--> 链接器--> 输入--> 附加依赖--> 添加“..\project1library\Debug\project1library.lib”
如果您的项目需要多个文件,则不必添加每个 obj 文件,只需添加一个 lib 文件。
但是,使用 lib、可执行文件和单元测试项目确保所有内容都在更改后正确重建可能会更加困难且容易出错。