gtest - 对`testing :: InitGoogleTest(int *,char **)'的未定义引用

时间:2018-03-01 07:45:36

标签: c++ makefile googletest

我尝试创建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

我做错了什么?

感谢。

1 个答案:

答案 0 :(得分:0)

&#39; -lgtest&#39;和&#39; -lgtest_main&#39;在链接exampleOutput时应传递参数,而不是在编译main.o时传递。它在注释中使用命令的原因是该命令一次执行两个步骤,而makefile不是。

makefile也是错误的,因为目标只被命名为&#39;输出&#39;而命令实际上产生了&#39; exampleOutput&#39;,所以即使不需要该命令也会一直执行,因为名为&#39;输出&#39;它预期永远不会真正生产......