我一直在尝试使用googletest库编译一个简单的C++程序。我已经使用g++来使它起作用,但是该项目很快就会变得很大,我希望能够使用make来自动进行编译。我安装了已经在另一个程序上测试过的GNU make for windows,并且它可以工作。但是,当我尝试使用make编译我的googletest项目时,出现以下错误:

ld.exe: cannot find -lgtest

这是我的makefile的内容:
all: test.exe
    test.exe: main.cpp
    g++ -o test.exe .\main.cpp .\sample1.h .\sample1.cc .\sample1_unittest.cc -ID:\...\gtest\include -LD:\D...\gtest\lib\ -lgtest_main -lgtest -Wall
clean:
    rm test.o test.exe

奇怪的是,如果我从命令行运行相同的代码,如下所示,可以正常运行,最终我得到了test.exe。
g++ -o test.exe .\main.cpp .\sample1.h .\sample1.cc .\sample1_unittest.cc -ID:\...\gtest\include -LD:\D...\gtest\lib\ -lgtest_main -lgtest -Wall

有谁知道这可能是由什么引起的以及如何解决?

最佳答案

好的,我设法找到了问题!我仍然不确定为什么会出现这种情况,但是显然您必须指定如下路径:

-LD:\...\gtest\lib

而不是这样(请注意额外的):
-LD:\...\gtest\lib\

该错误消息是有道理的,因为它必须一直试图在看起来像这样的路径中搜索库:
-LD:\...\gtest\lib\\

这显然是行不通的。我想让我失望的是,从命令行执行时该代码有效。我花了一段时间查看我的路径规范中的不确定性,并弄明白make不需要多余的'\'。希望这可以防止别人浪费我的时间。

10-08 08:28
查看更多