Debian不再为gTest提供任何预编译的包。他们建议您将框架集成到项目的makefile中。但我想保持makefile干净。如何像以前的版本(<1.6.0)一样设置gTest,以便我可以链接到库?
在开始之前,请确保您已阅读并理解this note from Google!本教程简单易用gtest,但可能会介绍nasty bugs。
wget https://github.com/google/googletest/archive/release-1.8.0.tar.gz
或者通过hand获取它。我不会保留这个小方法,所以如果你偶然发现并且链接已经过时,请随时编辑它。
tar xf release-1.8.0.tar.gz
cd googletest-release-1.8.0
cmake -DBUILD_SHARED_LIBS=ON .
make
此步骤可能与发行版到发行版不同,因此请确保将标头和库复制到正确的目录中。我通过检查Debians former gtest libs所在的位置来完成此操作。但我确信有更好的方法可以做到这一点。注意:make install
很危险,不受支持
$ sudo cp -a include/gtest /usr/include
$ sudo cp -a libgtest_main.so libgtest.so /usr/lib/
...并检查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的qazxsw poi,了解它的工作原理。快乐的编码!
编辑:这也适用于OS X!见documentation
以下方法避免手动搞乱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
目录,同时还需要对/usr/lib
文件进行最小的更改。它还允许您的包管理器干净地卸载CMakeLists.txt
。
这个想法是当你通过libgtest-dev
包时
libgtest-dev
源存储在sudo apt install libgtest-dev
位置
您可以简单地将/usr/src/googletest
指向该目录,以便它可以找到必要的依赖项
只需用CMakeLists.txt
替换FindGTest
最后,它应该是这样的
add_subdirectory(/usr/src/googletest gtest)
对于1.8.1基于@ManuelSchneid3r的回答我必须做的:
add_subdirectory(/usr/src/googletest gtest)
target_link_libraries(your_executable gtest)
然后我做了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
,它似乎适用于1.8.1,但是跟随@ ManuelSchneid3r它意味着:
make install
让我专门为ubuntu用户回答这个问题。首先安装gtest开发包。
"How to properly setup googleTest on OS X"
请注意,此程序包仅安装源文件。您必须自己编译代码以创建必要的库文件。这些源文件应位于/ usr / src / gtest。浏览到此文件夹并使用cmake编译库:
sudo apt-get install libgtest-dev
现在要编译使用gtest的程序,你必须将它链接到:
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
这对我来说在Ubuntu 14.04LTS上非常适合。
我花了一段时间才弄明白,因为正常的“make install”已被删除,我不使用cmake。以下是我分享的经验。在工作中,我没有Linux上的root访问权限,所以我在我的主目录下安装了Google测试框架:-lgtest -lgtest_main
。
要在〜/ usr / gtest /中安装软件包作为共享库,以及样本构建:
~/usr/gtest/
要验证安装,请使用以下test.c作为简单的测试示例:
$ 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
编译:
#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();
}
如果您碰巧使用CMake,您可以使用 $ 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
描述的ExternalProject_Add
。
这可以避免您必须将gtest源代码保存在存储库中,或者将其安装在任何位置。它会自动下载并构建在构建树中。
我同样对这种情况不感兴趣,最终为此制作了自己的Ubuntu源代码包。这些源包允许您轻松生成二进制包。它们基于最新的gtest和gmock源码。
Google Test DEB Source Package
要构建二进制包,请执行以下操作:
Google Mock DEB Source Package
它可能会告诉您需要一些先决条件包,在这种情况下您只需要apt-get安装它们。除此之外,构建的.deb二进制包应该位于父目录中。
对于GMock,过程是一样的。
作为旁注,虽然不是特定于我的源包,但是当将gtest链接到单元测试时,请确保首先包含gtest(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
)这看起来像是一个常见的问题。
为了防止其他人在昨天(2016-06-22)遇到像我这样的情况,并且在已经发布的方法上也没有成功 - 在https://bbs.archlinux.org/viewtopic.php?id=156639上,它使用以下命令链为我工作:
Lubuntu 14.04
来自askubuntu的答案对我有用。看起来比其他选项更简单,更不容易出错,因为它使用包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
从那里获取源代码和构建:libgtest-dev
请参考该答案,但作为一种捷径,我也提供了以下步骤:
https://askubuntu.com/questions/145887/why-no-library-files-installed-for-google-test?answertab=votes#tab-top
在那之后,我可以构建我的项目,这取决于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/
没有问题。
这将在基于Ubuntu / Debian的系统中安装google test和mock库:
gtest
在基于debian的图像中测试谷歌云。
这将构建并安装gtest和gmock 1.7.0:
sudo apt-get install google-mock