在Makefiles中包含用于单元测试文件的gtest库:
Including gtest libraries in Makefiles for unit test files:
我目前正在学习如何在c++中制作和使用MakeFiles程序。我已经能够为正常的。cpp类创建和运行Makefiles,但我遇到了测试类的问题。对于测试,我在Code::Blocks中使用Gtest,并在"链接器设置"中的Test_A.cpp文件中添加:
/usr/lib/libgtest.a
/usr/lib/libgtest_main.a
和其他链接器选项,我把"-pthread"。我知道这些库需要以某种方式添加到makefile中,但我不知道如何添加。我最初认为它们需要添加到第3行,但是我尝试的所有操作都返回了数千行类型为
的错误。 undefined reference to `testing::Test::TearDown()
undefined reference to `testing::Test::~Test() etc....
我的makefile。
1. all: Test
2. Test_A.o: Test_A B.h
3. g++ -c Test_A.cpp -o Test_A.o
4. Test: Test_A.o
5. g++ -o Test Test_A.o
6. clean:
7. rm -rf *o *~
库被添加到链接行:
g++ -o Test Test_A.o /usr/lib/libgtest.a /usr/lib/libgtest_main.a -lpthread
在构建最终的二进制文件时,需要将库名称列表传递给链接器。LDFLAGS
是Makefiles中使用的变量,用于指示传递给链接器的标志列表。
-
要链接到库
libabc.a
或libabc.so
,您需要将链接标志传递为-labc
。 -
要指定库的位置,需要使用
-L
标志。注意,除了在/etc/ld.so.conf
中定义的目录外,链接器还在LD_LIBRARY_PATH
中搜索库的目录。
虽然-L/usr/lib
在您的情况下是可选的(因为您的发行版应该已经配置了ld.so.conf以从/usr/lib
中拾取库),但我在下面展示了它,以防您想将其更改到不同的位置。
LDFLAGS := -lpthread -lgtest -lgtest_main -L/usr/lib
all: Test
Test_A.o: Test_A B.h
g++ -c Test_A.cpp -o Test_A.o
Test: Test_A.o
g++ -o Test Test_A.o $(LDFLAGS)
clean:
rm -rf *o *~
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 在 Windows 10 下使用 GTest 的 CMake - 致命错误 LNK1104:无法打开文件"gtest.lib",但存在调试"gtestd.lib"
- 使用gtest时,在头文件中而不是.cpp文件中具有可测试类的利弊
- 如何将G 和GTEST集成到一个CMAKE文件中
- CMake + Qt + GTest 文件链接
- GTEST单元测试目标配置文件路径
- GTEST测试项目链接链接到其他可执行文件
- 无法打开包含文件 - 'gtest.h' - 没有此类文件或目录
- 如何编译 gtest cpp 文件
- 使用带有g++和gtest的scons制作单元测试二进制文件
- 在gtest中,如何添加库文件到可执行的测试文件
- makefile中的-I标志不会导致找到头文件(gtest/gtest.h)
- 在Makefiles中包含用于单元测试文件的gtest库:
- 生成临时文件/文件夹 c++ GTEST