我正在使用 Google Test 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
(和 cd /usr/src/googlemock
...)