如何在 Linux 上将 googleTest 设置为共享库

新手上路,请多包涵

Debian 不再为 gTest 提供任何预编译的软件包。他们建议您将框架集成到项目的 makefile 中。但我想保持我的 makefile 干净。如何像以前的版本(<1.6.0)一样设置 gTest,以便可以链接到库?

原文由 ManuelSchneid3r 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 785
2 个回答

在开始之前,请确保您已阅读并理解 Google 的此说明!本教程使 gtest 的使用变得容易,但可能会引入 令人讨厌的错误

1.获取googletest框架

wget https://github.com/google/googletest/archive/release-1.8.0.tar.gz

或者 手拿。我不会维护这个小操作指南,所以如果你偶然发现它并且链接已经过时,请随时编辑它。

2. 解压构建google test

 tar xf release-1.8.0.tar.gz
cd googletest-release-1.8.0
cmake -DBUILD_SHARED_LIBS=ON .
make

3. 在您的系统上“安装”头文件和库。

此步骤可能因发行版而异,因此请确保将标头和库复制到正确的目录中。我通过检查 Debian 以前的 gtest 库 的位置来实现这一点。但我确信有更好的方法来做到这一点。

 sudo cp -a googletest/include/gtest /usr/include
sudo cp -a googlemock/gtest/libgtest_main.so googlemock/gtest/libgtest.so /usr/lib/

# The easiest/best way:
make install  # Note: before v1.11 this can be dangerous and is not supported

4.更新链接器的缓存

…并检查 GNU 链接器是否知道库

sudo ldconfig -v | grep gtest

如果输出如下所示:

 libgtest.so.0 -> libgtest.so.0.0.0
libgtest_main.so.0 -> libgtest_main.so.0.0.0

那么一切都很好。

gTestframework 现在可以使用了。只是不要忘记通过将 -lgtest 设置为链接器标志来将您的项目与库链接,如果您没有编写自己的测试主程序,则可以选择显式 -lgtest_main 标志。

从这里开始,您可能想访问 Google 的 文档,以及有关该框架的 旧文档,以了解它是如何工作的。快乐编码!

编辑: 这也适用于 OS X!请参阅 “如何在 OS X 上正确设置 googleTest”

原文由 ManuelSchneid3r 发布,翻译遵循 CC BY-SA 4.0 许可协议

Debian/Ubuntu 更新

Google Mock(包: google-mock )和 Google Test(包: libgtest-dev )已合并。新包名为 googletest 。两个旧名称仍可用于向后兼容,现在依赖于新包 googletest

因此,要从包存储库中获取库,您可以执行以下操作:

 sudo apt-get install googletest -y
cd /usr/src/googletest
sudo mkdir build
cd build
sudo cmake ..
sudo make
sudo cp googlemock/*.a googlemock/gtest/*.a /usr/lib

之后,您可以链接到 -lgmock (或 -lgmock_main 如果您不使用自定义主方法)和 -lpthread 。至少在我的情况下,这足以使用 Google Test。

如果您想要最新版本的 Google Test,请从 github 下载。之后,步骤类似:

 git clone https://github.com/google/googletest
cd googletest
sudo mkdir build
cd build
sudo cmake ..
sudo make
sudo cp lib/*.a /usr/lib

如您所见,创建库的路径已更改。请记住,新路径也可能很快对包存储库有效。

您可以使用 sudo make install 代替手动复制库。它“当前”有效,但请注意它在过去并不总是有效。此外,使用此命令时您无法控制目标位置,并且您可能不想污染 /usr/lib

原文由 stackprotector 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题