cmake+gtest

article/2025/11/11 17:24:11

项目中想用google test,项目也是用cmake管理的。
于是想用cmake 添加gtest

set(CMAKE_PREFIX_PATH"/path/to/gtest/install/path/cmake/path"${CMAKE_PREFIX_PATH})enable_testing()set(GTEST_ROOT "/path/to/gtest/install/path")find_package(GTest REQUIRED)add_executable(test test.cpp)
target_link_libraries(test${GTEST_LIBRARIES}${GTEST_MAIN_LIBRARIES})
gtest_discover_tests(test)

出现错误:

CMake Error at D:/Program Files/cmake/cmake-3.14.4-win64-x64/share/cmake-3.14/Modules/FindPackageHandleStandardArgs.cmake:137 (message):Could NOT find GTest (missing: GTEST_LIBRARY GTEST_MAIN_LIBRARY)

我检查了FindGTest.cmake,发现在197行

FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTest DEFAULT_MSG GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY)

第一个参数GTest在之前的代码中没有出现
于是解决办法就很清楚了,把FindGTest.cmake文件删除,使用GTest自带的cmake。
成功运行。

问题原因:可能是因为使用GTest版本比较新,cmake没有跟上步伐。


但之后提供链接不到库,不想折腾了
修改了cmake配置

enable_testing()set(GTEST_ROOT "/path/to/gtest/install/path")
include_directories(${GTEST_ROOT}/include)
add_executable(test test.cpp)
target_link_libraries(testGTest::gtest GTest::gmock_mainGTest::gmockGTest::gtest_main    )
gtest_discover_tests(test)

这次配置正确了,但是出现如下错误:

error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(obs-browser.obj 中) 

先介绍下编译windows设置

/MDdMD_DynamicDebug
/MDMD_DynamicRelease
/MTMD_StaticRelease
/MTdMD_StaticDebug

google test默认是按静态编译的(/MTd),而我按(/MDd)编译,所以不匹配
于是修改cmake配置:

set(CMAKE_CXX_FLAGS_RELEASE "/MT")
set(CMAKE_CXX_FLAGS_DEBUG "/MTd")
enable_testing()set(GTEST_ROOT "/path/to/gtest/install/path")
include_directories(${GTEST_ROOT}/include)
add_executable(test test.cpp)
target_link_libraries(testGTest::gtest GTest::gmock_mainGTest::gmockGTest::gtest_main)

之后运行正常。这里给qtcreator打个广告。
原生支持googlte test,真是方便啊
PS:左侧“项目”下拉栏,点击,就可以看到Tests。
在这里插入图片描述

获取错误信息

如果代码运行有问题,比如抛出未被处理的异常,编译后的程序会直接取出,不输出任何辅助信息。
解决办法是在运行参数里添加参数--gtest_break_on_failure

只运行特定测试用例

在命令行使用--gtest_filter=,如
${buildProgram} --gtest_filter=testABC.*,只测试testABC下的用例

捕获异常

参考网页


http://chatgpt.dhexx.cn/article/AqZJ0acT.shtml

相关文章

熟悉使用gtest

文章目录 1:介绍1.1、什么是gtest1.2、断言 2、gtest的简单使用3、gtest系列之事件机制4、gtest系列之死亡测试 1:介绍 1.1、什么是gtest gtest是一个跨平台的(Liunx、Mac OS X、Windows、Cygwin、Windows CE and Symbian)C单元测试框架,由…

gtest测试

环境安装 1、下载gtest1.8版本 wget https://github.com/google/googletest/archive/refs/tags/release-1.8.1.zip 2、将其解压在“.../gtest/”目录下,解压命令: unzip release-1.8.1.zip 3、配置 解压后产生文件googletest-release-1.8.1&#x…

GTest 总结

Google C单元测试框架(简称Gtest),可在多个平台上使用(包括Linux, Mac OS X, Windows, Cygwin和Symbian),它提供了丰富的断言、致命和非致命失败判断,能进行值参数化测试、类型参数化测试、“死…

GTest

参考链接: https://blog.csdn.net/linhai1028/article/details/81675724 https://www.cnblogs.com/helloworldcode/p/9606838.html 一.gtest简介 是Google的一套用于编写C测试的框架,可以运行在很多平台上(包括Linux、Mac OS X、Windows、Cygwin等等&am…

GTest从入门到入门

GTest从入门到入门 1 GTest简介 GTest是Google的开源库,是一个功能强大的跨平台C测试功能库。对于非测试工程师的开发人员来说,学习GTest有利于进行代码的单元测试。 GTest的功能不止于单元测试,事实上,GTest可以适用于各种测试…

gtest--单元测试

文章目录 gtest单元测试1.gtest的优点2.搭建测试框架 gtest单元测试 gtest是Google的一套用于编写C测试的框架,可以运行在很多平台上(包括Linux、Mac OS X、Windows、Cygwin等等)。基于xUnit架构。支持很多好用的特性,包括自动识别…

gtest教程(记录小白从0学习gtest的过程)

gtest使用教程 1 简介 之前对gtest一无所知,最近,找了些相关的资料,学习了下.这里主要记录了学习过程和相关知识点. 什么是gtest: gtest测试框架是在不同平台上(Linux,Mac OS X,Windows,Cygwin,Windows CE和Symbian…

gtest单元测试框架介绍及简单使用

Gtest介绍 Gtest是Google的一个开源框架,它主要用于写单元测试,检查真自己的程序是否符合预期行为。可在多个平台上使用(包括Linux, Mac OS X, Windows, Cygwin和Symbian)。它提供了丰富的断言、致命和非致命失败判断&#xff0c…

java用户行为日志记录方法_简单易用的开源用户操作日志记录系统

我们开发的业务系统通常会提供给很多人使用,那在使用的过程中,日志系统变得非常重要。 日志系统记录的用户行为有以下的作用: 从系统用户角度看:它展示了用户自身的操作历史和具体对象的变动历史,便于用户进行梳理 从系统管理员角度看:它可以记录了所有用户操作,便于我们…

后台管理系统操作日志模块设计思路

背景 对于很多后台管理系统来说,权限较多,对系统操作的人也会多。如此以来,对于一些操作的记录就非常有必要了,从而可以清楚的追踪对系统进行操作的人以及做了哪些操作,并且可以快速排查定位一些问题。下面简单说一下…

绿盟日志审计系统

绿盟日志审计系统 LINUX系统连接agent步骤 - -华龙在飞翔 1.对应虚拟化环境中连接的Linux服务器打开输入用户名和密码 2.ifconfig来查找Linux服务器对应的网段ip地址 3.使用finalshell等工具用ip地址连接对应的Linux服务器 4.cd /opt对于文件夹上传,也可以直接对…

服务器怎么导出系统日志,服务器操作系统日志导出

服务器操作系统日志导出 内容精选 换一换 简要介绍Rsyslog是一个集中日志管理工具,基于流行的服务端/客户端模式,通过TCP或者UDP传输协议来发送日志信息,或者从网络设备、服务器、路由器、交换机、以及其它系统或嵌入式设备中接收生成的日志。语言:C一句话概述:集中日志管…

日志管理方法及系统

摘要 本发明涉及应用系统日志管理技术领域,提供了一种日志管理方法和系统,所述方法包括如下步骤:S1:初始化系统业务功能列表和业务功能方法列表;S2:将业务操作中的具体操作信息与系统日志表和历史数据日志表…

轻量级分布式日志管理系统Graylog、Loki及ELK的分析和对比

1. 为什么需要集中的日志系统? 在分布式系统中,众多服务分散部署在数十台甚至是上百台不同的服务器上,要想快速方便的实现查找、分析和归档等功能,使用Linux命令等传统的方式查询到想要的日志就费时费力,更不要说对日…

Web实时日志输出查看管理系统

开发人员无权限访问生产服务器,怎样查看日志来分析问题? 安全管理合规的原因,开发未被授权访问生产服务器,但经常会有分析问题查看日志的需求. 大家一般是怎样解决的? 我尝试用过的,或者是想到的方法主要有如下几种,但都不太完美,有更好的方案或者工具吗? 开源产品 logio…

服务器系统日志保留时间设置,服务器行为操作日志

服务器行为操作日志 内容精选 换一换 日志记录网管操作的信息以及NetEco中发生的重要事件。通过查询日志信息可以了解NetEco的运行情况和网管的具体操作情况。 为加强对系统数据的容灾管理,云堡垒机支持配置日志备份,提高审计数据安全性和系统可扩展性。本小节主要介绍如何在…

Qt--日志系统

一、前言 程序猿在开发的过程中是避免不了调试的,在Qt中除了打断点调试之外,我们常常还会用到QDebug来输出信息用于定位程序的问题。但是程序一旦打包发布给用户使用,release版本是看不到打印信息的,这样在碰到一些问题时就无法快…

计算机系统日志指什么内容,系统日志

系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。系统日志包括系统日志、应用程序日志和安全日志。 中文名 系统日志 包 括 系统、应用程序和安全日志作 用…

C++设计实现日志系统

日志系统几乎是每一个实际的软件项目从开发、测试到交付,再到后期的维护过程中极为重要的查看软件代码运行流程、还原错误现场、记录运行错误位置及上下文等的重要依据。一个高性能的日志系统,能够准确记录重要的变量信息,同时又没有冗余的打…

ELK——企业级日志管理系统

目录 1.ELK介绍 2、为什么要使用 ELK 3.完整日志系统的基本特征 4.ELK工作原理 5.部署ELK 5.1 安装elasticsearch 5.2 安装可视化插件 5.3 安装logstash 5.4 安装kibana 1.ELK介绍 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash…