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运行目录下
最终运行成功,输入了正确的标签定义变量名称,如下: