当前位置: 首页 > news >正文

Cmake编译glog成功并在QT中测试成功步骤

glog是开源的日志记录系统,下载地址GitHub - google/glog: C++ implementation of the Google logging module

跟gflags有点相似,编译和测试过程比较周折,所以记录下来具体的编译和测试步骤。

编译环境:Windows+Cmake+Vs2022+Qt5.14.2

1、下载源码:GitHub - google/glog: C++ implementation of the Google logging module,解压缩下载文件到D:\glog-master。

2、打开Cmake软件,设置源码位置:D:\glog-master,设置构建位置:D:/glog-master/build_vs2022x64,点击【Configure】按钮进行配置如下:

配置核心选项:

2.1 CMAKE_INSTALL_PREFIX路径手动设置为D:\glog-master\install

2.2 不勾选WITH_UNWIND 选项。

2.3 先后两次生成和编译对应的静态库和动态库。

不生成动态库文件配置如下图:

生成动态库文件glog.dll文件配置如下图:

3、编译源码:点击【Configure】 按钮+【Generate】按钮后,再点击【Open Project】按钮,会使用VS2022打开glog.sln解决方案。

在VS2022软件中,设置编译方式为Release+x64模式,选择解决方案-右键选择【重新生成解决方案】菜单,系统编译成功。

在VS2022软件中,选择INSTALL项目,右键选择【重新生成】,则在Cmake中配置的安装位置【D:\glog-master\install】下会生成对应的包含文件和库文件等。

4、由于在QT中使用glog对应的库文件时会出现错误提示,因此需要在VS2022中编译glog项目的时候,选择解决方案中的glog项目和glog_internal项目,分别设置项目属性:【C/C++】-【代码生成】-【运行库】设置为【多线程 (/MT)】

5、在QT中新建项目testGlog(编译器为【msvc2017+x64】,项目路径为【D:\QtCode\testGlog】),拷贝在VS2022软件中生成的【D:\glog-master\install】目录下的所有glog相关的驱动文件夹到【D:\QtCode\testGlog\glog】目录下。

6、在QT中修改testGlog.pro文件中的配置项,新增glog库引用如下:

#MSVC编译器防止中文乱码设置
win32-msvc*: {QMAKE_CFLAGS *= /utf-8QMAKE_CXXFLAGS *= /utf-8
}CONFIG(debug, debug|release) {QMAKE_CFLAGS_DEBUG += /MTdQMAKE_CXXFLAGS_DEBUG += /MTd
}CONFIG(release, debug|release) {QMAKE_CFLAGS_RELEASE += /MTQMAKE_CXXFLAGS_RELEASE += /MTQMAKE_LFLAGS_RELEASE   += /RELEASE /NODEFAULTLIB:msvcrt.lib
}INCLUDEPATH += $$PWD/glog/include
DEPENDPATH  += $$PWD/glog/include
LIBS += -L$$PWD/glog/lib -lglog

7、修改main.cpp文件代码如下,测试成功。

#define GLOG_NO_ABBREVIATED_SEVERITIES
#define GLOG_EXPORT
#define GLOG_NO_EXPORT
#include <windows.h>
#include <glog/logging.h>using namespace google;
int main(int argc, char* argv[]) {google::InitGoogleLogging("test");google::SetLogDestination(google::GLOG_INFO, "../log/logtestInfo");google::SetLogDestination(google::GLOG_ERROR, "../log/logtestDebug");//不为ERROR建立日志文件google::SetStderrLogging(google::GLOG_INFO);google::SetStderrLogging(google::GLOG_ERROR);google::LogToStderr();for (int i = 0; i < 100; ++i){LOG(INFO) << "TEST" << i << " cookies";}google::ShutdownGoogleLogging();
}

8、运行测试项目、拷贝驱动文件【D:\glog-master\install\bin\glog.dll】到【D:\QtCode\testGlog\Release\release】目录下,再次运行,测试OK.

http://www.xdnf.cn/news/718975.html

相关文章:

  • Mac本地安装MySQL jdbc Driver
  • 性能测试-jmeter实战1
  • R²AIN SUITE 驱动制造业变革:从灯塔实践到企业级落地方案
  • [Vue2]判断引用组件是否注册了 $emit 对应的事件
  • 网络摄像机POE交换机选型指南:技术参数与场景适配深度解析
  • 使用C# 快速删除Excel表格中的重复行数据-详解
  • HALCON常用算子
  • 【读代码】BabyAGI:自我构建的自主代理框架深度解析
  • Linux入门
  • C语言中函数指针和指针函数的定义及用法
  • 【leetcode】19. 删除链表的倒数第N个节点
  • CppCon 2014 学习第3天:Viewing the world through array-shaped glasses
  • 计算机网络常见体系结构、分层必要性、分层设计思想以及专用术语介绍
  • Mybatis(Plus)对JSON / Array类型进行序列化
  • 2.环境搭建
  • 项目更改权限后都被git标记为改变,怎么去除
  • ai绘制mg人物半侧面头型
  • 2025年OE SCI2区TOP,进化麻雀搜索算法ESSA+海洋阻尼器迟滞建模与辨识,深度解析+性能实测
  • 进程同步机制-信号量机制-记录型信号量机制中的的wait和signal操作
  • 未来楼宇自控系统升级优化,为绿色建筑发展注入更强动力支撑
  • 大模型应用开发之评估
  • 浅谈学习(费曼学习法)
  • 四叉树实现四边形网格
  • OpenGL —— 2.9.1、摄像机之模拟CS鼠标视角转动,可切换线框模式显示(附源码,glfw+glad)
  • 力扣刷题Day 64:括号生成(22)
  • 什么是物化视图(Materialized View)?
  • Redis的大Key问题如何解决?
  • [预训练]Encoder-only架构的预训练任务核心机制
  • 【Day39】
  • 【Doris基础】Apache Doris数据模型全面解析:选择最适合你的数据组织方式