Windows下Qt5.12.9静态编译(mingw 32bit)带MySQL全纪录

折腾了快小一个月,参考了好多大神们的笔记,不停尝试后问题终于解决了(So Sad),赶紧写篇文记录一下,以免自己忘记。

1. 准备工作

1.1 下载并安装Qt5.12.9

下载链接:https://download.qt.io/archive/qt/5.12/5.12.9/
安装步骤参考:https://blog.youkuaiyun.com/xiaowangyanjiu/article/details/123787604
注意:在步骤“Select Components”时一定勾选上“Sources”。

如果已经安装了Qt,但是没有已安装版本的Qt源码,可在官网上下载对应版本的源码,下载地址为:https://download.qt.io/archive/qt/5.12/5.12.9/single/

1.2 下载并安装perl

安装步骤参考:https://blog.youkuaiyun.com/weixin_43493507/article/details/130125008

1.3 下载并安装Python

进入“ActiveState”主页(https://www.activestate.com/),选择“PRODUCT”->“Python”,在显示界面中选择“Windows”下的“Downloa Python 3.10”,并对下载工程进行配置(可直接默认配置),如下图:
在这里插入图片描述
界面划至底部,点击“Download & Install Python”,在弹出的界面内选择“Install via Command Prompt(cmd.exe)”,再点击“Copy to Clipboard”,如下图:
在这里插入图片描述
同时点击“Win”+“R”,或搜索“运行”,在对话框内输入“cmd”,运行管理员命令行。在命令行内右击复制上一步的命令,点击回车进行python的下载安装。安装安装完成后在命令行内输入“python -v”,如输出python版本信息则python安装成功。

1.4 下载并安装Ruby

官网下载地址:https://rubyinstaller.org/downloads/下载相应版本安装即可。
(不知道是否需要,但Qt官网上写着需要安装,就安装上了)

1.5 安装MySQL

安装步骤参考https://blog.youkuaiyun.com/theLostLamb/article/details/78797643
注意安装版本选择32bit的

2. 静态库编译

2.1 Qt5.12.9静态库编译

首先创建静态库的安装文件夹,我选择安装在Qt的安装路径下(D:\Qt\Qt5.12.9\5.12.9\mingw73_32_static)。注意该路径不能有中文字符

打开Qt MinGW 32bit命令行窗口,如下图:
在这里插入图片描述
执行cd指令进入Qt源码的存放目录下,执行如下配置命令:

configure.bat -confirm-license -opensource -optimize-size -platform win32-g++ -debug-and-release -static -static-runtime -prefix "D:\Qt\Qt5.12.9\5.12.9\mingw73_32_static" -no-openssl -sql-sqlite -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -qt-pcre -qt-harfbuzz -no-qml-debug -no-angle -nomake tests -nomake examples -skip wayland -skip qtwebengine -recheck-all

configure的选项配置具体含义可通过执行configure.bat -help进行查看,并根据实际需要更改配置选项。
注意-prefix后的路径需要更改成上述你需要安装的路径。

configure完成后执行如下命令:

ming32-make -j12

(-j后的数字表示并行任务数量,该数量可与你所用电脑的cpu核数一致,用来加快编译效率)
编译成功后执行如下命令:

mingw32-make -j12 install

安装完成后在你所选的安装路径下就完成有了Qt的静态编译库,目录结构如下所示:
在这里插入图片描述
注意:该静态库是不包含MySQL驱动的

2.2 QtCreator配置

运行QtCreator,选择“工具”-》“选项”,在弹出的界面内先选择“Kits”-》“Qt Version”,选择“手动设置”-》“添加”,选择静态库内的qmake.exe后确认,如图:
在这里插入图片描述
切换至“Kits”,添加手动设置,如图:
在这里插入图片描述
点击“OK”后,即可在QtCreator内使用Qt静态库对程序进行编译和发布了。
使用Qt静态编译得到的exe文件可以发布使用。

2.3 MySql驱动编译

首先,将MySQL安装路径下的库文件libmysql.dll和libmysql.lib拷贝至Qt静态编译库的bin文件夹下,如下图:
在这里插入图片描述
找到Qt源码内mysql驱动编译的源程序工程,我的路径为:
D:\Qt\qt-everywhere-src-5.12.9\qtbase\src\plugins\sqldrivers\mysql

使用QtCreator打开mysql.pro,编译器可使用已配置的静态编译器或者使用系统的mingw32。

注意编译路径一点要配置成与上述的工程路径一致,即D:\Qt\qt-everywhere-src-5.12.9\qtbase\src\plugins\sqldrivers\mysql,否则会出现编译出错情况。

第二步,更改mysql.pro:

  • 注释掉QMAKE_USE += mysql
  • 添加mysql lib库的路径
  • 添加编译生成路径
TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

#QMAKE_USE += mysql

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)

LIBS += "C:\Program Files (x86)\MySQL\MySQL Server 5.7\lib\libmysql.lib"
INCLUDEPATH += "C:\Program Files (x86)\MySQL\MySQL Server 5.7\include"

如果使用系统mingw32进行编译的话,需在mysql.pro中多增加一条

CONFIG += static

第三步,更改qsqldriverbase.pri文件:

QT  = core core-private sql-private

# For QMAKE_USE in the parent projects.
#include($$shadowed($$PWD)/qtsqldrivers-config.pri)
include(./configure.pri)

PLUGIN_TYPE = sqldrivers
load(qt_plugin)

DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII

执行程序编译后,可生成如下文件:
在这里插入图片描述
第四步,更改qsqlmysql.prl:

QMAKE_PRL_LIBS = "C:\\Program Files (x86)\\MySQL\\MySQL Server 5.7\\lib\\libmysql.lib" $$[QT_INSTALL_LIBS]/libQt5Sql.a $$[QT_INSTALL_LIBS]/libQt5Core.a -lmpr -lnetapi32 -luserenv -lversion -lws2_32 -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lwinmm $$[QT_INSTALL_LIBS]/libqtpcre2.a

第五步,更改qsqlmysqld.prl:

QMAKE_PRL_LIBS = "C:\\Program Files (x86)\\MySQL\\MySQL Server 5.7\\lib\\libmysql.lib" $$[QT_INSTALL_LIBS]/libQt5Sqld.a $$[QT_INSTALL_LIBS]/libQt5Cored.a -lmpr -lnetapi32 -luserenv -lversion -lws2_32 -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lwinmm $$[QT_INSTALL_LIBS]/libqtpcre2d.a

第六步,将生成的四个文件拷贝至此前编译的Qt静态库的plugins\sqldrivers路径下。如果当前QtCreator正在工作,请关闭重启QtCreator。

2.4 使用例程

在需要使用mysql的Qt程序工程的pro文件中加入如下语句:

QT       += sql
QTPLUGIN += qsqlmysql

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../Qt/Qt5.12.9/5.12.9/mingw73_32_static/plugins/sqldrivers/ -lqsqlmysql
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../Qt/Qt5.12.9/5.12.9/mingw73_32_static/plugins/sqldrivers/ -lqsqlmysqld

在使用时添加引用声明语句:

#include <QSqlDatabase>
#include <QtPlugin>

Q_IMPORT_PLUGIN(QMYSQLDriverPlugin)

注意:使用MySQL的Qt程序在发布时需要连同libmysql.dll一起发布。

3. 静态库下载

Qt5.12.9的MinGW32-bit的静态库下载地址:https://download.youkuaiyun.com/download/weixin_43493507/87766856?spm=1001.2014.3001.5503

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CathleenMouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值