如何设置googleTest为Linux上的共享库(How to setup googleTest

2019-06-21 06:53发布

Debian不会提供任何GTEST预编译软件包了。 他们建议你到框架集成到你的项目生成文件。 但我想保持我的make文件干净。 如何设置GTEST像前版本(<1.6.0),这样我就可以aganist链接库?

Answer 1:

开始之前请确保您已阅读并理解由谷歌这个笔记 ! 本教程使得使用GTEST容易,但可能会引入讨厌的错误 。

1.获得googletest框架

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

或得到它的手 。 我不会保持这个小操作方法,所以如果你偶然发现了它,并链接是过时的,随意编辑。

2.打开包装并建立谷歌测试

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

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

此步骤可能从发行到发行版不同,所以一定要复制的头文件和库在正确的目录。 我通过检查,其中完成了这一Debians前GTEST库分别位于。 但我敢肯定有更好的方法来做到这一点。 注: make install是危险的,不支持

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

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作为连接标志和可选,如果你不写自己的测试mainroutine,明确-lgtest_main标志。

从这里开始,你可能要到谷歌文档有关的框架,以了解它是如何工作的。 编码愉快!

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



Answer 2:

我花了一段时间来弄清楚这一点,因为在正常运行“make install”已被删除,我不使用cmake的。 这是我的经验分享。 在工作中,我没有在Linux的root访问权限,所以我在我的主目录下安装了谷歌测试框架: ~/usr/gtest/

到在〜/ USR / GTEST /与样品构建安装包共享库,一起还有:

$ 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
$ cp -r ../include/gtest ~/usr/gtest/include/
$ cp lib*.so ~/usr/gtest/lib

为了验证安装,使用以下test.c的作为一个简单的试验例:

    #include <gtest/gtest.h>
    TEST(MathTest, TwoPlusTwoEqualsFour) {
        EXPECT_EQ(2 + 2, 4);
    }

    int main(int argc, char **argv) {
        ::testing::InitGoogleTest( &argc, argv );
        return RUN_ALL_TESTS();
    }

编译:

    $ export GTEST_HOME=~/usr/gtest
    $ export LD_LIBRARY_PATH=$GTEST_HOME/lib:$LD_LIBRARY_PATH
    $ g++ -I $GTEST_HOME/include -L $GTEST_HOME/lib -lgtest -lgtest_main -lpthread test.cpp 


Answer 3:

让我明确回答这个为Ubuntu用户。 首先开始通过安装GTEST开发包。

sudo apt-get install libgtest-dev

请注意,这个包只安装源文件。 你必须自己编写代码来创建必要的库文件。 这些源文件应位于/ usr / src目录/ GTEST。 浏览到该文件夹​​和使用cmake的编译库文件:

sudo apt-get install cmake # install cmake
cd /usr/src/gtest
sudo cmake CMakeLists.txt
sudo make

# copy or symlink libgtest.a and libgtest_main.a to your /usr/lib folder
sudo cp *.a /usr/lib

我们编译的程序使用GTEST,你必须把它与链接:

-lgtest -lgtest_main

这完全为我工作在Ubuntu 14.04LTS。



Answer 4:

如果你碰巧使用CMake的,你可以使用ExternalProject_Add描述这里 。

这样您就无需保持GTEST在你的仓库源代码,或任何安装。 它被下载并自动建立你的构建树。



Answer 5:

我,同样用这种状况深刻的印象,并最终使自己的Ubuntu源代码软件包这一点。 这些源代码包让你轻松地生成二进制软件包。 它们是基于最新的GTEST&gmock源作为这篇文章的上。

谷歌测试DEB源码包

谷歌模拟DEB源码包

要构建二进制包做到这一点:

tar -xzvf gtest-1.7.0.tar.gz
cd gtest-1.7.0
dpkg-source -x gtest_1.7.0-1.dsc
cd gtest-1.7.0
dpkg-buildpackage

它可能会告诉你,你需要一些在这种情况下,你只需要到必要的预包apt-get安装它们。 除此之外,内置.deb二进制软件包应该然后坐在父目录。

对于GMock,这个过程是一样的。

作为一个侧面说明,而不是针对我的源码包,链接GTEST到你的单元测试时,确保GTEST被首次列入( https://bbs.archlinux.org/viewtopic.php?id=156639 )这似乎是一个常见的问题。



Answer 6:

万一有人像我一样的情况被人得到昨日(2016年6月22日),也不会与已经发布的办法成功-对Lubuntu 14.04它使用下面的命令链为我工作:

git clone https://github.com/google/googletest
cd googletest
cmake -DBUILD_SHARED_LIBS=ON .
make
cd googlemock
sudo cp ./libgmock_main.so ./gtest/libgtest.so gtest/libgtest_main.so ./libgmock.so /usr/lib/
sudo ldconfig


Answer 7:

这从askubuntu答案是对我工作。 似乎比其他选择更简单的容易出错少,因为它使用包libgtest-dev获取来源,并从那里建立: https://askubuntu.com/questions/145887/why-no-library-files-installed-for -Google测试?answertab =#投票制表顶部

请参考这个问题的答案,而只是作为一种快捷方式我在这里提供的步骤,以及:

sudo apt-get install -y libgtest-dev
sudo apt-get install -y cmake
cd /usr/src/gtest
sudo cmake .
sudo make
sudo mv libg* /usr/lib/

在那之后,我可以建立我的项目,这取决于gtest没有问题。



Answer 8:

这将安装在基于Ubuntu / Debian的系统,谷歌测试和模拟库:

sudo apt-get install google-mock

经测试,在谷歌云基于Debian的图像。



Answer 9:

这将建立和安装都GTEST和gmock 1.7.0:

mkdir /tmp/googleTestMock
tar -xvf googletest-release-1.7.0.tar.gz -C /tmp/googleTestMock
tar -xvf googlemock-release-1.7.0.tar.gz -C /tmp/googleTestMock
cd /tmp/googleTestMock
mv googletest-release-1.7.0 gtest
cd googlemock-release-1.7.0
cmake -DBUILD_SHARED_LIBS=ON .
make -j$(nproc)
sudo cp -a include/gmock /usr/include
sudo cp -a libgmock.so libgmock_main.so /usr/lib/
sudo cp -a ../gtest/include/gtest /usr/include
sudo cp -a gtest/libgtest.so gtest/libgtest_main.so /usr/lib/
sudo ldconfig


Answer 10:

对于基于@ ManuelSchneid3r的答案1.8.1我不得不这样做:

wget github.com/google/googletar xf release-1.8.1.tar.gz 
tar xf release-1.8.1.tar.gz
cd googletest-release-1.8.1/
cmake -DBUILD_SHARED_LIBS=ON .
make

然后我没有make install这似乎为1.8.1工作,但以下@ ManuelSchneid3r这将意味着:

sudo cp -a googletest/include/gtest /usr/include
sudo cp -a googlemock/include/gmock /usr/include
sudo cp `find .|grep .so$` /usr/lib/


文章来源: How to setup googleTest as a shared library on Linux