使用googletest编译项目时出错

时间:2019-04-03 20:54:09

标签: c++ unit-testing g++ googletest

嗨,我正在googletest和Ubuntu Linux上开发一个项目。我已经通过apt在/ lib / include / gtest中安装了所有googletest .h文件。

我的main()方法如下:

#ifdef UNITTESTING
#include <gtest/gtest.h>
int main(int argc, char** argv)
{
    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}
#endif /* UNITTESTING *

我正在日食方面发展。不幸的是,编译时出现以下错误:

Invoking: Cross G++ Linker
g++  -o "[##project##]"  ./test/src/test_main.o
./test/Encoder/test_telemetry_encoder.o  
./test/Decoder/test_telemetry_decoder.o  ./src/crc.o ./src/main.o 
./src/rfc1662_handler.o  
./modules/TelemetryEncoder/src/telemetry_encoder.o  
./modules/TelemetryDecoder/src/telemetry_decoder.o   
./test/src/test_main.o: In Funktion »main«: [###]/Decoder/../test/src/test_main.cpp:16: Warnung: undefinierter Verweis auf »testing::InitGoogleTest(int*, char**)«
./test/src/test_main.o: In Funktion »RUN_ALL_TESTS()«:
/usr/include/gtest/gtest.h:2233: Warnung: undefinierter Verweis auf »testing::UnitTest::GetInstance()«
/usr/include/gtest/gtest.h:2233: Warnung: undefinierter Verweis auf »testing::UnitTest::Run()«
makefile:50: recipe for target '[##project##]' failed
collect2: error: ld returned 1 exit status
make: *** [[##project##]] Error 1
"make all" terminated with exit code 2. Build might be incomplete.

22:40:47 Build Failed. 5 errors, 0 warnings. (took 1s.836ms)

您知道为什么会发生这种情况吗?

我已经尝试过的:

  1. 我已将/ usr / include添加到我的包含路径。

  2. 我的编译器调用也看起来像这样:

    g++ -std=c++0x -DUNITTESTING -I"[###]/modules/TelemetryEncoder/inc" -I/usr/include/gtest -I/usr/include -I"[###]/modules/TelemetryDecoder/inc" -I"[###]/inc" -I/usr/local/include -O0 -g3 -Wall -c -fmessage-length=0 -std=gnu++11 -MMD -MP -MF"test/src/test_main.d" -MT"test/src/test_main.o" -o "test/src/test_main.o" "../test/src/test_main.cpp"  -lgtest -lpthread -lgtest_main
    

该项目确实在具有g ++的Mac OS系统上运行。我检查了What is an undefined reference/unresolved external symbol error and how do I fix it?中的解决方法,但没有一个方法适用于我(或者我已经尝试过)。我的问题似乎更具体。 我也无法通过系统上的locate找到任何libgtest.so文件。仅libgtest.a归档在目录/ usr / lib中。

0 个答案:

没有答案