??博__主??:米碼收割機(jī)
??技__能??:C++/Python語(yǔ)言
??公眾號(hào)??:測(cè)試開(kāi)發(fā)自動(dòng)化
??專__注??:專注主流機(jī)器人、人工智能等相關(guān)領(lǐng)域的開(kāi)發(fā)、測(cè)試技術(shù)
【GTest】使用CMakeLitsts.txt構(gòu)建Windows和Linux的跨平臺(tái)GoogleTest項(xiàng)目
1. 構(gòu)建靜態(tài)庫(kù)
- Linux構(gòu)建參考我的文章:【點(diǎn)擊這里】
- windows構(gòu)建靜態(tài)庫(kù)參考我的文章:【點(diǎn)擊這里】
2. 構(gòu)建項(xiàng)目文件夾
(1)創(chuàng)建GtestAPI的文件夾,作為項(xiàng)目的文件夾。
?
(2)在GtestAPI文件夾下:
- 創(chuàng)建include文件夾用于存放gtest的頭文件
- 創(chuàng)建CMakeLists.txt用于編寫(xiě)構(gòu)建腳本
- 創(chuàng)建lib文件夾用于存放靜態(tài)庫(kù)
?(3)在lib文件夾下:
- 創(chuàng)建debug文件加和release文件夾用于存放windows和linux編譯出來(lái)的靜態(tài)庫(kù)(.lib和.a文件)
?(4)創(chuàng)建GtestAPI.cpp 用來(lái)編寫(xiě)測(cè)試代碼。
整體的目錄結(jié)構(gòu)如下:
GtestAPI
? ├─ ?include
? ├─ ? CMakeLists.txt
? └─? lib
?????????├─ ?debug
?????????└─? release
3. include文件夾
將克隆下來(lái)的googletest-main的文件夾中的include文件夾(路徑:D:\googletest-main\googletest\include
)中的整個(gè)gtest文件夾復(fù)制到你的項(xiàng)目目錄中。
4. lib文件夾
將你在Linux構(gòu)建好的靜態(tài)庫(kù)(release和debug模式)和windows上構(gòu)建好的靜態(tài)庫(kù)(release和debug模式)分別復(fù)制到 /GtestAPI/lib/release
和/GtestAPI/lib/debug
文件夾中:
注意:此處必須是windows和Linux系統(tǒng)在對(duì)應(yīng)模式下(release/debug)構(gòu)建出來(lái)的靜態(tài)庫(kù)。靜態(tài)庫(kù)必須與文件夾一一對(duì)應(yīng),否則會(huì)報(bào)錯(cuò)。
5. CMakeLists.txt
編寫(xiě)CMakeLists.txt構(gòu)建文件,內(nèi)容如下(復(fù)制到CMakeLists.txt中即可):
cmake_minimum_required(VERSION 3.12)
project(GtestAPI)
set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/GtestAPI.cpp)
set(INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
add_executable(GtestAPI ${SOURCES})
target_include_directories(GtestAPI PRIVATE ${INCLUDE_DIR})
set(DEBUG_LIB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/debug)
set(RELEASE_LIB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/release)
if(CMAKE_BUILD_TYPE MATCHES Debug)
# debug模式
target_link_directories(GtestAPI PRIVATE ${DEBUG_LIB_DIR})
target_link_libraries(GtestAPI PRIVATE gmock_main gtest_main)
# 設(shè)置debug模式下的編譯選項(xiàng)
target_compile_definitions(GtestAPI PRIVATE _ITERATOR_DEBUG_LEVEL=2)
if(WIN32)
target_compile_options(GtestAPI PRIVATE /MDd)
else()
find_package(Threads REQUIRED)
target_link_libraries(GtestAPI PRIVATE Threads::Threads)
target_compile_options(GtestAPI PRIVATE -g)
endif()
else()
# release模式
target_link_directories(GtestAPI PRIVATE ${RELEASE_LIB_DIR})
target_link_libraries(GtestAPI PRIVATE gmock_main gtest_main)
# 設(shè)置release模式下的編譯選項(xiàng)
target_compile_definitions(GtestAPI PRIVATE _ITERATOR_DEBUG_LEVEL=0)
if(WIN32)
target_compile_options(GtestAPI PRIVATE /MD)
else()
find_package(Threads REQUIRED)
target_link_libraries(GtestAPI PRIVATE Threads::Threads)
target_compile_options(GtestAPI PRIVATE -O3)
endif()
endif()
# 鏈接共享庫(kù)文件
target_link_libraries(GtestAPI PRIVATE gmock gtest)
6. GtestAPI.cpp
編寫(xiě)測(cè)試用例:
代碼如下(示例):
#include <iostream>
#include "gtest/gtest.h"
TEST(ErrorCodeTest, errorcode) {
int a = 0;
EXPECT_EQ(a, 0);
}
int main(int argc, char** argv) {
testing::InitGoogleTest();
return RUN_ALL_TESTS();
}
7. 開(kāi)始構(gòu)建
7.1 Linux構(gòu)建運(yùn)行
將你的 GtestAPI文件夾工程拷貝到Linux中,執(zhí)行以下命令:
cd GtestAPI
mkdir build && cd build
cmake .. && make
執(zhí)行如下命令運(yùn)行:
./bin/GtestAPI
7.2 windows構(gòu)建運(yùn)行
使用CMake工具進(jìn)行構(gòu)建,填寫(xiě)好源碼路徑和構(gòu)建路徑。
點(diǎn)擊Configure,彈窗內(nèi)容設(shè)置參考如下:
點(diǎn)擊Generate和 Open Project
運(yùn)行結(jié)果如下:
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-470938.html
8. 總結(jié)
如果不知道如何構(gòu)建對(duì)應(yīng)的項(xiàng)目,參考第一步,歷史博客。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-470938.html
到了這里,關(guān)于【GTest】使用CMakeLitsts.txt構(gòu)建Windows和Linux的跨平臺(tái)GoogleTest項(xiàng)目(非常詳細(xì)+親測(cè)有效)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!