linux - 如何在没有 root 访问权限的情况下在 Ubuntu 上安装 Google Test?

标签 linux ubuntu installation googletest

我正在尝试根据 this answer 安装 Google Test在没有 root 访问权限的 Ubuntu 上,因为我需要在工作中学习和使用它。

设法在我自己的用户文件夹中完成这些:

$ mkdir ~/temp
$ cd ~/temp
$ unzip gtest-1.7.0.zip 
$ cd gtest-1.7.0
$ mkdir mybuild
$ cd mybuild
$ cmake -DBUILD_SHARED_LIBS=ON -Dgtest_build_samples=ON -G"Unix Makefiles" ..
$ make

似乎我已经在/usr/src/gtest 中安装了 gtest,尽管我不想使用它,因为它不是我安装的,我不确定它的版本,也不确定它的可用性。未经许可甚至不能删除它。

仍然指令结束为:

$ cp -r ../include/gtest ~/usr/gtest/include/
$ cp lib*.so ~/usr/gtest/lib

我在这里错过了什么?

最佳答案

假设您想在 /home/me/googletest 中安装 googletest。

浏览到 googletest GitHub 存储库 https://github.com/google/googletest。 (不要使用您可能在其他地方获得的可能已过时的版本。)

使用克隆或下载链接,克隆或下载并解压 源代码为(比方说)./googletest 在您当前目录 CWD 下(其中 CWD 不是 /home/me/)。

然后在 CWD 中:-

$ mkdir googletest_build
$ cd googletest_build
$ cmake -DCMAKE_INSTALL_PREFIX:PATH=/home/me/googletest ../googletest
$ make
$ make install

在此之后,你会发现:-

/home/me/googletest/
                lib/
                    libgmock.a
                    libgmock_main.a
                    libgtest.a
                    libgtest_main.a
                include/
                        gmock/
                            # gmock header files
                        gtest/
                            # gtest header files

然后您可以在源代码中使用 gtest/gmock header ,例如:

#include <gtest/gtest.h>
#include <gmock/gmock.h>

然后像这样编译和链接一个 gtest/gmock 程序:

g++ -pthread -I/home/me/googletest/include -c -o my-unit-tester.o my-unit-tester.cpp
g++ -o my-unit-tester my-unit-tester.o -L/home/me/googletest/lib -lgtest -lgmock -pthread

使用 -I... 选项告诉编译器 gtest/gmock header 所在的位置以及 使用 -L... 选项告诉链接器 gtest/gmock 库所在的位置。

-pthread 传递给编译器和链接器,因为 gtest/gmock 库是 默认内置多线程。

安装后您不再需要 CWD/googletestCWD/googletest_build

您可能希望将附加选项传递给 cmake,在这种情况下,构建产品将根据这些附加选项的含义而有所不同。

关于linux - 如何在没有 root 访问权限的情况下在 Ubuntu 上安装 Google Test?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38395984/

相关文章:

c++ - 将 Char 从 lex 保存到 C 中的 Char 数组

android - 无法从 Jenkins 签署 Android APK,但可以从命令行运行

.net - 在 Linux 上安装特定版本的 .NET Core 运行时

java - lambdaj 安装

python - 在 Dreamhost 上安装和编译 Python、Django、Virtualenv、Mercurial、Git、LessCSS 等的脚本

linux - 使用 Bash 在 Linux 中设置环境变量

android - 如何在 Android 和 Linux 上将 JPG 文件解码为相同的位图?

linux - 如何修改文件权限以防止删除但允许执行?

javascript - npm:安装和使用包的不同版本

html - 我将网站发送到 Linux 服务器后,有些图片未显示