我尝试创建makefile并编译gtest
的简单示例,但我收到错误:
g ++ main.o -o exampleOutput main.o:在函数
main': main.cpp:(.text+0x1e): undefined reference to
中测试:: InitGoogleTest(int *,char **)' collect2:错误:ld返回1 退出状态make:*** [输出]错误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;
}
这是makefile:
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
。
我做错了什么?
感谢。
答案 0 :(得分:0)
&#39; -lgtest&#39;和&#39; -lgtest_main&#39;在链接exampleOutput时应传递参数,而不是在编译main.o时传递。它在注释中使用命令的原因是该命令一次执行两个步骤,而makefile不是。
makefile也是错误的,因为目标只被命名为&#39;输出&#39;而命令实际上产生了&#39; exampleOutput&#39;,所以即使不需要该命令也会一直执行,因为名为&#39;输出&#39;它预期永远不会真正生产......