ld.exe: 仅在为 windows 使用 GNU make 时找不到 -lgtest

ld.exe: cannot find -lgtest only when using GNU make for windows

我一直在尝试使用 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

有谁知道这可能是由什么原因造成的以及如何解决?

好的,我找到问题了!我仍然不确定为什么会这样,但显然在 make 你必须像这样指定路径:

-LD:\...\gtest\lib    

而不是这样(注意额外的):

-LD:\...\gtest\lib\

错误消息是有道理的,因为它一定是在尝试在如下所示的路径中搜索库:

-LD:\...\gtest\lib\

这显然行不通。我猜让我失望的是代码在从命令行执行时有效。我花了一段时间才看到我的路径规范中的不一致,并弄清楚 make 不需要额外的“\”。希望这会阻止其他人像我一样浪费时间。