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

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运行目录下

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

相关文章:

  • Qt实战:自定义QTreeWidget搜索隐藏显示项功能 | 附完整源码
  • 轻量化开源方案——浅析PdfPatcher实际应用
  • 在单片机中如何在断电前将数据保存至DataFlash?
  • C++:整数奇偶排序
  • [特殊字符] 使用增量同步+MQ机制将用户数据同步到Elasticsearch
  • MATLAB 2023b 配电柜温度报警系统仿真
  • 【算法】:动态规划--背包问题
  • Spring AI 源码解析:Tool Calling链路调用流程及示例
  • 夏日旅行(广度优先搜索)
  • 嵌入式软件-如何做好一份技术文档?
  • 深入理解设计模式之适配器模式
  • 《Python语言程序设计》第4章第8题3个个位数之间比大小。‘a小于b而b大于c’这是最有漏洞的一个对比,请问我如何判断a和c
  • Jenkins的Pipline中有哪些区块,以及其它知识点整理
  • 计算机网络学习(五)——TCP
  • C++ --- string
  • 全局异常处理器
  • 开篇:MCP理论理解和学习
  • 基于Python的自动化视频编辑脚本设计,能够处理视频剪辑、添加字幕、文本动画、音效和图形等功能
  • 24. 日志的基本实现方式
  • 第十天的尝试
  • 电影网站源码怎么做的/八八网
  • 做网站付费流程/网站建设的技术支持
  • king 主题WordPress/seo是什么意思
  • 好看的 网站后台模板/千锋教育地址
  • 程序员 修电脑 做网站/系统优化工具
  • 太原网站建设世纪优创/自己想开个网站怎么弄