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

Cmake编译gflags过程记录和在QT中测试

        由于在QT中使用PaddleOCR2.8存在这样那样的问题,查找貌似是gflags相关问题导致的,因此从头开始按相关参考文章编译一遍gflags源码,测试结果表明Qt5.14.2中使用MSVC2017+X64编译器运行的QT+gflags项目是正常。

详细编译步骤如下:

1、通过下面的方式下载gflags

        https://github.com/gflags/gflags
        git clone https://github.com/gflags/gflags.git

2、下载后的gflags-master.zip文件解压到D:\QTCodeg\flags目录。

3、打开cmake软件,设置源码目录D:/QTCode/gflags和构建目录D:/QTCode/gflags/buildvs,设置编译器为msvc2017 x64.

4、添加或者设置详细的配置项如下:

BUILD_SHARED_LIBS        勾选        编译动态库
BUILD_STATIC_LIBS        勾选        编译静态库
BUILD_gflags_LIB            勾选        编译多线程库
BUILD_gflags_nothreads_LIB            勾选        编译多线程库
CMAKE_INSTALL_PREFIX    D:/gflags    自定义安装目录到D:/gflags
INSTALL_HEADERS        勾选        安装头文件
INSTALL_SHARED_LIBS    勾选        安装动态库
INSTALL_STATIC_LIBS        勾选        安装静态库
REGISTER_BUILD_DIR        不勾选    不写注册表
REGISTER_INSTALL_PREFIX 不勾选    不写注册表

5、完成配置后点击【Configure】按钮、【Generate】按钮生成项目文件。在资源管理器中打开构建目录D:\QTCode\gflags\buildvs。并使用VS2022打开D:\QTCode\gflags\buildvs\gflags.sln解决方案。

6、在VS2022软件中选择构建模式为Release+x64,之后选择解决方案,重新生成解决方案菜单生成对应的dll文件和

7、打开QT5.14.2软件,新建项目testGflags项目到D:\QTCode\testGflags目录下,并拷贝刚安装的D:\gflags目录到D:\QTCode\testGflags\gflags目录。

8、修改testGflags.pro项目文件,添加gflags对应的项目引用:

#添加msvc2017+x64编译器对应的gflags驱动引用
INCLUDEPATH += $$PWD/gflags/include
DEPENDPATH  += $$PWD/gflags/include
LIBS += -L$$PWD/gflags/lib -lgflags -lgflags_nothreads

修改main.cpp文件新增测试代码

#include "mainwindow.h"#include <QApplication>
#include <QDebug>
#include <iostream>
#include <gflags/gflags.h>DEFINE_string(var, "111", "input var");int main(int argc, char *argv[])
{QApplication a(argc, argv);google::ParseCommandLineFlags(&argc, &argv, true);std::cout << FLAGS_var << std::endl;qDebug()<< QString::fromStdString(FLAGS_var) ;return a.exec();
}

拷贝gflags对应的gflags.dll和gflags_nothreads.dll文件到Debug或者Release运行目录下

最终运行成功,输入了正确的标签定义变量名称,如下:

http://www.lryc.cn/news/2386352.html

相关文章:

  • 项目中Warmup耗时高该如何操作处理
  • 制作一款打飞机游戏53:子弹样式
  • Windows磁盘无法格式化及磁盘管理
  • 每日算法 -【Swift 算法】Z 字形变换(Zigzag Conversion)详解与实现
  • Docker运维-5.3 配置私有仓库(Harbor)
  • day 36
  • mybatis-plus使用记录
  • Mcu_Bsdiff_Upgrade
  • 有监督学习——决策树
  • 华为OD机试真题——启动多任务排序(2025B卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • AWS云与第三方通信最佳实践:安全、高效的数据交互方案
  • Ubuntu Server 24 设置 WiFi 网络的方案
  • 【redis】redis和hiredis的基本使用
  • 大模型时代,Python 近红外光谱与 Transformer 模型:学习的必要性探究
  • 产品经理常用术语大全
  • 梯度优化提示词:精准引导AI分类
  • AUTOSAR 运行时环境 (RTE)
  • Bolt.new:重塑 Web 开发格局的 AI 利器
  • RK3588 RKNN ResNet50推理测试
  • SQLMesh 宏操作符详解:提升 SQL 查询的灵活性与效率
  • leetcode513.找树左下角的值:递归深度优先搜索中的最左节点追踪之道
  • 基于Flink的数据中台管理平台
  • AI-Ready TapData:如何基于 MCP 协构建企业级 AI 实时数据中枢?(含教程)
  • Spring Boot 登录实现:JWT 与 Session 全面对比与实战讲解
  • 【HTML-5】HTML 实体:完整指南与最佳实践
  • SpringBoot 项目实现操作日志的记录(使用 AOP 注解模式)
  • AI|Java开发 IntelliJ IDEA中接入本地部署的deepseek方法
  • 【疑难杂症】Vue前端下载文件无法打开 已解决
  • 【1——Android端添加隐私协议(unity)1/3】
  • Linux之概述和安装vm虚拟机