gtest - 对`testing::InitGoogleTest(int*, char**)' 的未定义引用
gtest - undefined reference to `testing::InitGoogleTest(int*, char**)'
我正在尝试创建 makefile 并编译 gtest
的简单示例,但出现错误:
g++ main.o -o exampleOutput main.o: In function main':
main.cpp:(.text+0x1e): undefined reference to
testing::InitGoogleTest(int*, char**)' collect2: error: ld returned 1
exit status make: *** [output] Error 1
这个main.cpp:
#include <iostream>
#include "gtest/gtest.h"
using namespace std;
int main(int argc, char **argv)
{
cout << "This is test" << endl;
testing::InitGoogleTest(&argc, argv);
return 0;
}
这是生成文件:
INCLUDE = -I/usr/include/
LIBPATH = -L/usr/lib/
output: main.o
g++ main.o -o exampleOutput
main.o: main.cpp
g++ -c main.cpp $(INCLUDE) $(LIBPATH) -lgtest -lgtest_main -pthread
(Gtest 的)头文件位于 /usr/include/gtest
并且 lib 文件位于 /usr/lib
.
我做错了什么?
谢谢。
链接 exampleOutput 时应传递 -lgtest
和 -lgtest_main
参数,而不是在编译时传递 main.o。它与您评论中的命令一起使用的原因是该命令一次完成两个步骤,而您的 makefile 则不是。
makefile 也不正确,因为目标仅命名为 output
,而命令实际生成 exampleOutput
,因此即使不需要该命令,也会始终执行该命令,因为文件命名为 output
,它期望永远不会实际生产...
我正在尝试创建 makefile 并编译 gtest
的简单示例,但出现错误:
g++ main.o -o exampleOutput main.o: In function
main': main.cpp:(.text+0x1e): undefined reference to
testing::InitGoogleTest(int*, char**)' collect2: error: ld returned 1 exit status make: *** [output] Error 1
这个main.cpp:
#include <iostream>
#include "gtest/gtest.h"
using namespace std;
int main(int argc, char **argv)
{
cout << "This is test" << endl;
testing::InitGoogleTest(&argc, argv);
return 0;
}
这是生成文件:
INCLUDE = -I/usr/include/
LIBPATH = -L/usr/lib/
output: main.o
g++ main.o -o exampleOutput
main.o: main.cpp
g++ -c main.cpp $(INCLUDE) $(LIBPATH) -lgtest -lgtest_main -pthread
(Gtest 的)头文件位于 /usr/include/gtest
并且 lib 文件位于 /usr/lib
.
我做错了什么?
谢谢。
链接 exampleOutput 时应传递 -lgtest
和 -lgtest_main
参数,而不是在编译时传递 main.o。它与您评论中的命令一起使用的原因是该命令一次完成两个步骤,而您的 makefile 则不是。
makefile 也不正确,因为目标仅命名为 output
,而命令实际生成 exampleOutput
,因此即使不需要该命令,也会始终执行该命令,因为文件命名为 output
,它期望永远不会实际生产...