*以下內容為本人的學習筆記,如需要轉載,請宣告原文鏈接 微信公眾號「ENG八戒」https://mp.weixin.qq.com/s/aFeiOGO-N9O7Ab_8KJ2wxw

開發者雖然主要負責工程里的開發任務,但是每個開發完畢的功能都是需要開發者自測通過的,所以經常會聽到開發者提起單元測驗的話題,那么今天我就帶大伙一起來看看大名鼎鼎的谷歌 C++ 測驗框架 GoogleTest.
本文上接《C++ 測驗框架 GoogleTest 初學者入門篇 甲》,歡迎關注微信公眾號【ENG八戒】查看更多精彩內容,

安裝配置環境
Googletest 的安裝配置程序并不復雜,但是對于小白來說還是有些困難,所以很有必要手把手說一下,
為了更清晰地說明環境配置程序,下面會選擇對 Googletest 原始碼執行編譯,然后安裝,編譯原始碼時,Googletest 官方手冊推薦使用的工具有兩種,這里只介紹其中的 Cmake,
其實在各個平臺,用戶都有使用 Googletest 的需求,這里專挑 Linux 和 Windows 平臺來分別說明怎么安裝配置 Googletest,
linux 平臺
我的虛擬機里 Linux 系統是 Ubuntu 18.04,使用 apt 在線直接安裝的 cmake 版本最高只能去到 3.10,為了順利編譯最新版的 Googletest 原始碼,選擇安裝官網最新版的 cmake,
安裝最新版 cmake
先卸載原來的 cmake 版本,再添加指定安裝源為 kitware.com 并更新安裝緩沖,最后開始安裝,下面的指令可依次操作
# 卸載 cmake
sudo apt purge --auto-remove cmake
# 下載 cmake 安裝包,
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null
sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main'
sudo apt update
sudo apt install cmake
下載編譯 gtest 開發包
下載安裝原始碼包
sudo apt-get install libgtest-dev
進入原始碼安裝目錄,執行編譯
cd /usr/src/gtest
sudo cmake CMakeLists.txt
sudo make
編譯完之后,我看到網上有些教程會推薦直接拷貝庫檔案(.a)到 /usr/lib 目錄
sudo cp *.a /usr/lib
不過,我建議是直接用 install 命令,這樣庫檔案和頭檔案都可以一步部署到位
sudo make install
好了,到這里 ubuntu 下面的 googletest 就安裝結束了,你也可用之前的應用樣例來驗證一下環境是否 OK ,
Windows 平臺
在 Windows 平臺安裝最新版 cmake 比較簡單,這里掠過,
我這里安裝的版本是
cmake version 3.24.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
下載編譯 googletest 原始碼包
這里選擇 googletest 的最新穩定版原始碼包,可以去 github 下載,下面貼出我這邊實驗用的下載鏈接
https://codeload.github.com/google/googletest/zip/refs/tags/v1.13.0
下載之后解壓到本地檔案夾,進到這個本地檔案夾,然后啟動命令列終端 cmd,當前位置應該是這個本地檔案夾,接著按照下面的指令去編譯,默認輸出靜態的除錯版本庫檔案(.lib)
mkdir build && cd build
cmake ..
cmake --build .
編譯成功后,在目錄 .\build\lib\Debug 下面多了很多生成檔案,但是我們只需要這兩個靜態庫檔案
gtest.lib
gtest_main.lib
那么,怎么輸出動態的除錯版本庫檔案(.lib)呢?

按照上圖修改保存,然后輸入和上面一樣的編譯指令即可,
編譯成功后,在目錄 .\build\bin\Debug 下面多了很多生成檔案,但是我們只要這兩個動態庫檔案
gtest.dll
gtest_main.dll
另外,和編譯靜態庫檔案一樣,在目錄 .\build\lib\Debug 下生成的這兩個靜態庫檔案也是需要的,用于鏈接目標 exe 檔案,
gtest.dll
gtest_main.dll
測驗工程配置示例
新建一個測驗工程 TEST,呼叫 googletest 庫分為靜態呼叫和動態呼叫,分別對應上一節的兩種輸出檔案,現在就分開來演示一下怎么配置目標測驗工程,
TEST 工程只有一個原始碼檔案 main.cpp
呼叫靜態除錯庫
首先,需要找到 googletest 的原始碼目錄下的 .\googletest\include\gtest

把整個檔案夾拷貝到目標測驗工程 TEST 目錄下,然后把 gtest 編譯輸出的靜態庫檔案(.lib)也拷貝到目標測驗工程 TEST 的 .\gtest\lib 目錄下

然后看一下 CMakeLists.txt 可以這樣寫
cmake_minimum_required(VERSION 2.14)
project(runTests)
# Locate GTest
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
message("CMAKE_CURRENT_SOURCE_DIR:" ${CMAKE_CURRENT_SOURCE_DIR})
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/gtest/lib)
# for window static debug
set(CMAKE_CXX_FLAGS_DEBUG "/MTd")
# for window dynamic debug
# set(CMAKE_CXX_FLAGS_DEBUG "/MDd")
# for window dynamic release
# set(CMAKE_CXX_FLAGS_DEBUG "/MD")
# for window static release
# set(CMAKE_CXX_FLAGS_DEBUG "/MT")
# Link runTests with what we want to test and the GTest and pthread library
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME}
gtest
gtest_main)
Cmake 工程的編譯方法都是一樣的,照搬上面提到的編譯指令即可,這里略過
呼叫動態除錯庫
配置程序,和呼叫靜態除錯庫是差不多的,但是在把 gtest 編譯輸出的靜態庫檔案(.lib)拷貝到目標測驗工程 TEST 的 .\gtest\lib 目錄下時,也需要把 gtest 編譯輸出的動態庫檔案(.dll)一起拷貝到目標測驗工程 TEST 的 .\gtest\lib 目錄下,這樣的目的是為了在測驗工程 TEST 編譯的程序中,方便部署可執行檔案(.exe)的運行環境,也就是 exe 檔案依賴的 googletest 庫檔案,
然后看一下 CMakeLists.txt 可以這樣寫
# for default window dynamic debug
cmake_minimum_required(VERSION 2.14)
project(runTests)
set(DESTINATION_DIR ${PROJECT_BINARY_DIR}/Debug)
execute_process( COMMAND ${CMAKE_COMMAND} -E make_directory ${DESTINATION_DIR})
execute_process( COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/gtest/lib/gtest_main.dll ${DESTINATION_DIR})
execute_process( COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/gtest/lib/gtest.dll ${DESTINATION_DIR})
# Locate GTest
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
message("CMAKE_CURRENT_SOURCE_DIR:" ${CMAKE_CURRENT_SOURCE_DIR})
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/gtest/lib)
# Link runTests with what we want to test and the GTest and pthread library
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME}
gtest
gtest_main)
在 cmake 運行程序中,會把 exe 檔案依賴的 googletest 庫檔案(.dll)拷貝到即將生成的 exe 檔案的存放位置,
由于篇幅受限,本系列教程還未完結,下一篇《C++ 測驗框架 GoogleTest 初學者入門篇 丙》將在本公眾號稍后推送,如果你想看了解更多精彩內容,歡迎關注我的微信公眾號 【ENG八戒】
學習可以等,時間不等人!
關注我,帶你學習編程領域更多核心技能!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/549219.html
標籤:其他
上一篇:Go語言入門4(切片)
