设置Google测试时找不到-lgtest

cannot find -lgtest when setting up Google Test

本文关键字:找不到 -lgtest 测试 Google 设置      更新时间:2023-10-16

我正在使用GoogleTest for C++,并试图在我的linux机器上进行设置。我的make文件有以下代码:

CC=g++ 
CFLAGS=-I $(GOOGLETESTDIR)/include -L $(GOOGLETESTDIR)/lib -lgtest -lpthread -Wall
DEPS=fib.h
OBJS=fib.o main.o
all: | r6
clean:
    -rm -f r6 $(OBJS)
%.o: %.cpp $(DEPS)
    $(CC) -c -o $@ $< $(CFLAGS) 
r6: $(OBJS)
    $(CC) -o $@ $^ $(CFLAGS) 
.PHONY: all clean

我在运行make:时出错

/usr/bin/ld: cannot find -lgtest

我该如何解决这个问题?我对这种测试很陌生,对linux也很陌生,所以我真的很失落。

我在Ubuntu 17.10上遇到了这个问题,基本上Alexander说的是真的。

有人写了一个很好的教程,里面有明确的命令,可以在https://www.eriksmistad.no/getting-started-with-google-test-on-ubuntu/

它可以归结为:

sudo apt install libgtest-dev cmake
cd /usr/src/gtest
sudo cmake CMakeLists.txt
sudo make
sudo cp *.a /usr/lib

就我个人而言,我很感激一个不手动将文件移动到/usr/lib中的解决方案,但从好的方面来说,它可以正常工作。

到目前为止,Google测试框架还没有预装二进制文件;你需要自己建造它们。请参阅README中关于如何做到这一点的完整详细信息(对于Debian,路径为/usr/src/googletest/googletest/README.md)。

在Ubuntu 22.04中,您可以执行以下操作来链接gtest和gtest_main库:

apt install googletest
cd /usr/src/googletest
mkdir build
cd build
cmake ..
make
cmake --install .

此脚本将编译静态库libgmock.a libgmock_main.a libgtest.a libgtest_main.a。然后使用cmake-install来避免手动将某些内容复制到/usr/local/lib

那么Makefile中的CFFLAGS应该看起来像:

CFLAGS= -lgtest -lgtest_main -lpthread -Wall

如果使用gmock,也可以添加-lgmock -lgmock_main