Linux系统安装google test(避雷)

0. 背景:因任务需求,需要对新增的功能使用google test(gtest)工具进行单元测试。在linux系统上作为用户(没有root权限)下,踩了一些小坑。

服务器上的编译器:gcc 4.8.5(很老的版本),系统自带,未支持C++14。

1. 下载google test工具

git clone https://github.com/google/googletest.git

注意!不选branch的话默认下载最新版本(需要编译器能够支持C++14),建议大家去查一下自己的编译器,否则会报大量语法错误。我这边服务器上的gcc 4.8.5是不支持的,因此我选择下载了一个旧版,命令如下:

git clone -b v1.10.x https://github.com/google/googletest.git

还有一个蛮奇怪的,如果你访问googletest版本树,会看到v1.12.1也仅需要编译器支持C++11,但我编译该版本时会报语法错误。

2. 安装gtest

进入目录,新建build(爱建不建),需要注意的是cmake的版本是有要求的,过低可能会报错,反正按照对应gtest的要求来就行。

注意!v1.10.x之后的版本有个坑需要看一下,cmake的时候会有问题,会在CMakelist.txt的127行附近报一个错,原因是下面语句中的GOOGLETEST_VERSION变量没有定义,需要手动加一下。

set(GOOGLETEST_VERSION 1.12.1) #手动添加该变量为自己实际安装的版本
set_target_properties(gtest PROPERTIES VERSION ${GOOGLETEST_VERSION})

这样,如果你之前的gcc和google版本是匹配的,那么make应该就没有语法问题了,否则就是版本不匹配问题。

cd googletest/googletest
mkdir build
cd build
cmake ..
make

3.配置gtest

如果你有root权限,那么恭喜你,可以直接将编译好的库和头文件直接放在系统的/usr/lib和/usr/include下边,让所有用户共享gtest功能。

cp ./lib/libgtest*.a  /usr/lib
cp –r ./googletest/include/gtest /usr/include/

如果你像我一样没有权限的话,请在自己项目的CMakeList.txt中加上如下两行,让编译器能够链接到库。

include_directories("/public1/home/scb1187/soft/gtest/googletest/googletest/include")
link_directories("/public1/home/scb1187/soft/gtest/googletest/googletest/build/lib")

并在CMakeList.txt链接时加上选项-lgtest -lpthread。

target_link_libraries(main${dim}d ${JASMIN_LIBRARIES} -cpp -lgfortran -lnetcdff -lnetcdf -lgtest -lpthread)

如果你的库和头文件的路径没写错,那么make整个工程应该就结束了,如果链接时报没找到-lgtest,那么请仔细检查你的路径设置。

4.使用gtest

加上头文件。使用。测试!

#include

你可能感兴趣的:(c++,linux)