【GTest】使用CMakeLitsts.txt构建Windows和Linux的跨平台GoogleTest项目(非常详细+亲测有效)

请添加图片描述


👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术


【GTest】使用CMakeLitsts.txt构建Windows和Linux的跨平台GoogleTest项目



1. 构建静态库


2. 构建项目文件夹

(1)创建GtestAPI的文件夹,作为项目的文件夹。
 
(2)在GtestAPI文件夹下:

  • 创建include文件夹用于存放gtest的头文件
  • 创建CMakeLists.txt用于编写构建脚本
  • 创建lib文件夹用于存放静态库
     

(3)在lib文件夹下:

  • 创建debug文件加和release文件夹用于存放windows和linux编译出来的静态库(.lib和.a文件)
     

(4)创建GtestAPI.cpp 用来编写测试代码。

整体的目录结构如下:

GtestAPI
  ├─  include
  ├─   CMakeLists.txt
  └─  lib
         ├─  debug
         └─  release

在这里插入图片描述


3. include文件夹

将克隆下来的googletest-main的文件夹中的include文件夹(路径:D:\googletest-main\googletest\include)中的整个gtest文件夹复制到你的项目目录中。

在这里插入图片描述


4. lib文件夹

将你在Linux构建好的静态库(release和debug模式)和windows上构建好的静态库(release和debug模式)分别复制到 /GtestAPI/lib/release/GtestAPI/lib/debug 文件夹中:

在这里插入图片描述

注意:此处必须是windows和Linux系统在对应模式下(release/debug)构建出来的静态库。静态库必须与文件夹一一对应,否则会报错。


5. CMakeLists.txt

编写CMakeLists.txt构建文件,内容如下(复制到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)
    
    # 设置debug模式下的编译选项
    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)
    
    # 设置release模式下的编译选项
    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()

# 链接共享库文件
target_link_libraries(GtestAPI PRIVATE gmock gtest)


6. GtestAPI.cpp

编写测试用例:

代码如下(示例):

#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. 开始构建

7.1 Linux构建运行

将你的 GtestAPI文件夹工程拷贝到Linux中,执行以下命令:

cd GtestAPI
mkdir build && cd build
cmake .. && make 

在这里插入图片描述
执行如下命令运行:

./bin/GtestAPI

在这里插入图片描述


7.2 windows构建运行

使用CMake工具进行构建,填写好源码路径和构建路径。

在这里插入图片描述

点击Configure,弹窗内容设置参考如下:

在这里插入图片描述
点击Generate和 Open Project

在这里插入图片描述

运行结果如下:

在这里插入图片描述


8. 总结

如果不知道如何构建对应的项目,参考第一步,历史博客。


  • 32
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 47
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 47
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

米码收割机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值