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

#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)

發佈了69 篇原創文章 · 獲贊 39 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章