GoogleTest Linux下环境配置(极度精简makefile)

首先感谢

http://blog.csdn.net/startarsyx/article/details/38305687

博主的文章,解决了关键性问题——链接后仍然提示未定义的引用这个玄学问题~

照例废话

前辈们总结了很多如何安装并使用Google Test的经验,但一般都是参照官方给的Instruction来进行操作的,不是特别灵活。
无意中发现了一种新的方法,可以在任何目录下编写简单的makefile即可实现测试~
简单的说就是将googletest框架编译成 .a 文件,放到系统lib目录下,每次使用链接到工程里,操作异常简单
下面进入正文

下载google test本体

https://github.com/google/googletest

喜闻乐见的gayhub,不多说了

编译并安装

下载并解压之后,进入对应目录,输入以下命令:

cmake CMakeLists.txt
make
sudo make install

这样就完成了对GoogleTest的安装。
原理就是,先使用CMake生成makefile,然后就是很常规的make编译,make install安装了(因为需要拷贝到usr/local/lib下,需要管理员权限)。

例子编写

main.cpp

#include "main.h"
bool TestFun(int a = 0)
{
    return a > 10 ? true : false;
}

main.h

扫描二维码关注公众号,回复: 747788 查看本文章
#pragma once
bool TestFun(int );

UnitTest-1.cpp

#include "gtest/gtest.h"
#include "main.h"
namespace
{
TEST(FunTest, BelowTen)
{
    EXPECT_TRUE(TestFun(11));
    EXPECT_TRUE(TestFun(12));
    EXPECT_TRUE(TestFun(13));
    EXPECT_TRUE(TestFun(14));
    EXPECT_TRUE(TestFun(15));
}
TEST(FunTest, AboveTen)
{
    EXPECT_FALSE(TestFun(0));
    EXPECT_FALSE(TestFun(1));
    EXPECT_FALSE(TestFun(2));
    EXPECT_FALSE(TestFun(3));
    EXPECT_FALSE(TestFun(4));
}

TEST(FunTest, MixNumbers)
{
    EXPECT_FALSE(TestFun(6));
    EXPECT_FALSE(TestFun(7));
    EXPECT_FALSE(TestFun(9));
    EXPECT_TRUE(TestFun(22));
    EXPECT_TRUE(TestFun(345));
    EXPECT_TRUE(TestFun(21312));
}
}

很简单的例子,能看到我这篇文章的各位我相信都已经看了不少其他前辈写的文章了,我就不多说了。
我觉得最关键的可能就是这个极度精简makefile了。
Google Test 极度精简的makefile

all: UnitTest-1

main.o : main.cpp main.h 
    $(CXX) -c main.cpp 

 UnitTest-1.o :  UnitTest-1.cpp  main.h 
    $(CXX) -c  UnitTest-1.cpp

UnitTest-1 : main.o  UnitTest-1.o
    $(CXX) -pthread -lgtest_main  -lgtest $^ -o $@  

最关键的就一行,省略了很多变量,可以让不太熟悉makefile的同志直观的看出google test框架最少需要的是什么。
(如果你有主函数,那么请去掉gtest_main)
还有,gtest_main 一定要在gtest之前,否则会出现链接错误(找不到xxxxx)

猜你喜欢

转载自blog.csdn.net/sunhaobo1996/article/details/79327271