当前位置: 首页 > 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运行目录下

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

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

相关文章:

  • std::thread的说明与示例
  • Linux中的文件描述符
  • 毕业论文格式(Word)
  • LINUX 524 rsync+inotify 调试(问题1:指定端口无法同步/已通过;问题2:rsync.log文件中时间不显示/已显示)
  • Linux--环境的搭建(云服务器)
  • 云原生安全:Linux命令行操作全解析
  • 自媒体运营新利器:账号矩阵+指纹浏览器,解锁流量密码
  • STM32中断优先级分组有哪几种?
  • 分享一套提高表达力的图书
  • 关于 Web 安全:4. 中间件 框架风险点分析
  • 【爬虫】爬bibi视频
  • LINQ性能优化终极指南
  • C++八股 —— 手撕shared_ptr
  • 我爱学算法之—— 二分查找(下)
  • 【案例篇】 实现简单SSM工程-后端
  • vue--ofd/pdf预览实现
  • mongodb语法$vlookup性能分析
  • 新能源产业破局之道:达索 3DE(PLM)系统重构数据管理与工程变更效率
  • 【Python 字典】基础到进阶的用法
  • 矩阵方程$Ax=b$的初步理解.
  • Windows 高分辨率屏幕适配指南:解决界面过小、模糊错位问题
  • 面向超大规模模型的提示词工程
  • UE5 图片导入,拖到UI上变色
  • 解决 cursor 中不能进入 conda 虚拟环境
  • PDF 转 JPG 图片小工具:CodeBuddy 助力解决转换痛点
  • 实现tdx-hs300-mcp
  • 【动态规划】简单多状态(二)
  • RIP 协议实验全记录:从配置到问题解决
  • HTTP基本概述
  • 在WPF程序中设置背景图片