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

标签 c++ linux unit-testing installation googletest

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

最佳答案

在开始之前,请确保您已阅读并理解 this note from Google !本教程使 gtest 的使用变得容易,但可能会引入 nasty bugs .

1。获取 googletest 框架

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

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

2。解压并构建谷歌测试

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

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

此步骤可能因发行版而异,因此请确保将 header 和库复制到正确的目录中。我通过检查 Debians former gtest libs 的位置来完成此操作。被定位。但我确信有更好的方法来做到这一点。

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标志。

从这里你可能想去谷歌documentation ,以及 old docs关于框架以了解它是如何工作的。编码愉快!

编辑: 这也适用于 OS X!见 "How to properly setup googleTest on OS X"

关于c++ - 如何在 Linux 上将 googleTest 设置为共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13513905/

相关文章:

c - 在 C 中使用 exit()

java - 如何对发送电子邮件的类进行单元测试?

java - 如何编写一个junit测试来在操作之间插入双向链表?

C++成员函数模板的隐式实例化

c++ - 为什么 `function<void (string)>` 和 `function<string (string)>` 参数类型有时对重载不明确?

c++ - stdin 没有读取输入的最后一行

python - 测试对象的初始化并使用它

c++ - 如何向 g++ 编译器解释读取用于从 'include' 文件中搜索 .h 文件的 'list' 目录列表

java - Oracle DataModeler 初始化 JavaFX 运行时时出现问题

linux - 带有 Bash Windows 的 Google Drive 文件夹