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

简介: 【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. 总结

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

相关文章
|
15天前
|
安全 数据安全/隐私保护 Windows
如何在Windows 10系统中查看已连接WiFi密码-亲测可用-优雅草卓伊凡
如何在Windows 10系统中查看已连接WiFi密码-亲测可用-优雅草卓伊凡
67 15
如何在Windows 10系统中查看已连接WiFi密码-亲测可用-优雅草卓伊凡
|
23天前
|
编解码 Linux iOS开发
Shotcut 25.03 (Linux, macOS, Windows) - 免费开源视频编辑器
Shotcut 25.03 (Linux, macOS, Windows) - 免费开源视频编辑器
66 11
|
1月前
|
安全 Unix Linux
Veritas NetBackup 11 for Linux & Windows - 领先的企业备份和恢复解决方案
Veritas NetBackup 11 for Linux & Windows - 领先的企业备份和恢复解决方案
43 0
Veritas NetBackup 11 for Linux & Windows - 领先的企业备份和恢复解决方案
|
19天前
|
人工智能 安全 Linux
Nexpose 8.2.0 for Linux & Windows - 漏洞扫描
Nexpose 8.2.0 for Linux & Windows - 漏洞扫描
63 20
Nexpose 8.2.0 for Linux & Windows - 漏洞扫描
|
20天前
|
存储 安全 Linux
Metasploit Pro 4.22.7-2025040601 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.7-2025040601 (Linux, Windows) - 专业渗透测试框架
60 1
Metasploit Pro 4.22.7-2025040601 (Linux, Windows) - 专业渗透测试框架
|
1月前
|
NoSQL IDE MongoDB
Studio 3T 2025.5 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
Studio 3T 2025.5 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
96 2
Studio 3T 2025.5 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
|
1月前
|
自然语言处理 数据库 iOS开发
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
119 12
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
|
20天前
|
Linux 网络安全 iOS开发
Metasploit Framework 6.4.55 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.55 (macOS, Linux, Windows) - 开源渗透测试框架
43 0
Metasploit Framework 6.4.55 (macOS, Linux, Windows) - 开源渗透测试框架
|
1月前
|
XML 安全 Ubuntu
Nexpose 8.0.0 for Linux & Windows - 漏洞扫描
Nexpose 8.0.0 for Linux & Windows - 漏洞扫描
55 10
|
1月前
|
Linux 虚拟化 Docker
Linux服务器部署docker windows
在当今软件开发中,Docker成为流行的虚拟化技术,支持在Linux服务器上运行Windows容器。流程包括:1) 安装Docker;2) 配置支持Windows容器;3) 获取Windows镜像;4) 运行Windows容器;5) 验证容器状态。通过这些步骤,你可以在Linux环境中顺利部署和管理Windows应用,提高开发和运维效率。
194 1
下一篇
oss创建bucket