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

这篇具有很好参考价值的文章主要介绍了【GTest】使用CMakeLitsts.txt构建Windows和Linux的跨平台GoogleTest项目(非常详细+亲测有效)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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


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


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



1. 构建静态库

  • Linux构建参考我的文章:【点击这里】
  • windows构建静态库参考我的文章:【点击这里】

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

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


3. include文件夹

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

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


4. lib文件夹

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

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

注意:此处必须是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 

【GTest】使用CMakeLitsts.txt构建Windows和Linux的跨平台GoogleTest项目(非常详细+亲测有效)
执行如下命令运行:

./bin/GtestAPI

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


7.2 windows构建运行

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

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

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

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

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

运行结果如下:

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


8. 总结

如果不知道如何构建对应的项目,参考第一步,历史博客。文章来源地址https://www.toymoban.com/news/detail-470938.html


到了这里,关于【GTest】使用CMakeLitsts.txt构建Windows和Linux的跨平台GoogleTest项目(非常详细+亲测有效)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 跨平台指南:在 Windows 和 Linux 上安装 OpenSSL 的完整流程

    一:找到安装包,双击即可 https://gitee.com/wake-up-again/installation-package.git 二:按照提示,一步一步来,就可以啦 三:此界面意思是,是否想向创作者捐款,自己视情况而定啦。 四:安装完毕之后,接下来就是VS下的环境配置了。 在VS下创建一个新项目,点到属性界面 五:找到

    2024年04月23日
    浏览(44)
  • 使用 docker buildx 构建跨平台镜像 (QEMU/buildx/build)

    https://docs.docker.com/build/building/multi-platform 构建跨平台镜像是 Docker 生态系统中的一个重要话题, 因为跨平台镜像可以在多种平台上运行, 极具灵活性。为了实现这个目标, Docker 社区提供了多种方式来构建跨平台镜像, 其中之一是使用 docker manifest, 我在《使用 docker manifest 构建跨平

    2024年02月03日
    浏览(57)
  • VirtualBox 7.0.10 (macOS, Linux, Windows) - 开源跨平台虚拟化软件

    VirtualBox 7.0.10 (macOS, Linux, Windows) - 开源跨平台虚拟化软件 Oracle VM VirtualBox 7 请访问原文链接:https://sysin.org/blog/virtualbox-7/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 2022 年 10 月 10 日,VirtualBox 7.0.0 发布! 甲骨文今天发布了重要的新版本 Oracle VM VirtualBox,

    2024年02月17日
    浏览(55)
  • 【LocalSend】开源跨平台的局域网文件传输工具,支持IOS、Android、Mac、Windows、Linux

    工作前提条件:设备使用相同的局域网。 LocalSend is a cross-platform app that enables secure communication between devices using a REST API and HTTPS encryption. Unlike other messaging apps that rely on external servers, LocalSend doesn’t require an internet connection or third-party servers, making it a fast and reliable solution for local

    2024年02月17日
    浏览(51)
  • SecureCRT & SecureFX 9.5 for macOS, Linux, Windows 下载 - 跨平台的多协议终端仿真和文件传输

    SecureCRT SecureFX 9.5 for macOS, Linux, Windows 下载 - 跨平台的多协议终端仿真和文件传输 请访问原文链接:SecureCRT SecureFX 9.5 for macOS, Linux, Windows,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org SecureCRT 客户端运行于 Windows、Mac 和 Linux,将坚如磐石的终端仿真与强大的

    2024年02月21日
    浏览(36)
  • SecureCRT & SecureFX 9.5.1.3272 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输

    SecureCRT SecureFX 9.5.1.3272 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输 请访问原文链接:https://sysin.org/blog/securecrt-9/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org SecureCRT 客户端运行于 Windows、Mac 和 Linux,将坚如磐石的终端仿真与强大的加密、广泛

    2024年03月11日
    浏览(50)
  • VSCode:使用CMakeLists.txt构建C++项目

    插件: CMake插件主要功能是CMake语法高亮、自动补全 CMake Tools的功能主要是结合VSCode IDE使用CMake这个工具,比如生成CMake项目、构建CMake项目等 CMake Tools Helper CMake工具本身还是要下载到本地,并且配置环境变量。 包括6部分:build文件夹、include文件夹、src文件夹、lib文件夹、

    2024年02月03日
    浏览(61)
  • C#winform软件实现一次编译,跨平台windows和linux兼容运行,兼容Visual Studio原生界面Form表单开发

    微软的.net core开发工具,目前来看,winform界面软件还没有打算要支持linux系统下运行的意思,要想让c#桌面软件在linux系统上运行,开发起来还比较麻烦。微软只让c#的控制台软件支持在linux运行。 我想到的一个方案是自定义封装软件的System.Windows.Forms组件,把支持windows和lin

    2024年02月08日
    浏览(64)
  • web前端项目使用electron打包成跨平台桌面端程序(Windows)

    Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需要本地开发 经验。 在使用Electron进行开发之前,您需要安装 Node.js。 我们建

    2024年02月16日
    浏览(80)
  • Flutter 实战:构建跨平台应用

    Flutter是由Google开发的一款开源移动应用开发框架,它可以帮助开发者在iOS和Android平台上快速、高效地开发应用。Flutter使用Dart语言作为开发语言,具有跨平台兼容性高、开发效率快、性能优异等特点。本文将通过实战案例,介绍如何使用Flutter构建跨平台应用。 在开始Flutte

    2024年02月05日
    浏览(183)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包