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

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

  • 1. 准备工作
    • 1.1 下载并安装Qt5.12.9
    • 1.2 下载并安装perl
    • 1.3 下载并安装Python
    • 1.4 下载并安装Ruby
    • 1.5 安装MySQL
  • 2. 静态库编译
    • 2.1 Qt5.12.9静态库编译
    • 2.2 QtCreator配置
    • 2.3 MySql驱动编译
    • 2.4 使用例程
  • 3. 静态库下载

1. 准备工作

1.1 下载并安装Qt5.12.9

下载链接:https://download.qt.io/archive/qt/5.12/5.12.9/
安装步骤参考:https://blog.csdn.net/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.csdn.net/weixin_43493507/article/details/130125008

1.3 下载并安装Python

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

1.4 下载并安装Ruby

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

1.5 安装MySQL

安装步骤参考https://blog.csdn.net/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的静态编译库,目录结构如下所示:
Windows下Qt5.12.9静态编译(mingw 32bit)带MySQL全纪录_第3张图片
注意:该静态库是不包含MySQL驱动的

2.2 QtCreator配置

运行QtCreator,选择“工具”-》“选项”,在弹出的界面内先选择“Kits”-》“Qt Version”,选择“手动设置”-》“添加”,选择静态库内的qmake.exe后确认,如图:
Windows下Qt5.12.9静态编译(mingw 32bit)带MySQL全纪录_第4张图片
切换至“Kits”,添加手动设置,如图:
Windows下Qt5.12.9静态编译(mingw 32bit)带MySQL全纪录_第5张图片
点击“OK”后,即可在QtCreator内使用Qt静态库对程序进行编译和发布了。
使用Qt静态编译得到的exe文件可以发布使用。

2.3 MySql驱动编译

首先,将MySQL安装路径下的库文件libmysql.dll和libmysql.lib拷贝至Qt静态编译库的bin文件夹下,如下图:
Windows下Qt5.12.9静态编译(mingw 32bit)带MySQL全纪录_第6张图片
找到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

执行程序编译后,可生成如下文件:
Windows下Qt5.12.9静态编译(mingw 32bit)带MySQL全纪录_第7张图片
第四步,更改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 
#include 

Q_IMPORT_PLUGIN(QMYSQLDriverPlugin)

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

3. 静态库下载

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

你可能感兴趣的:(qt,windows,mysql)