【配置教程】M2 Mac 配置 QT 的 MYSQL 驱动

经过了足足两天的折磨配置,博主终于配置好了 QT 的 mysql 驱动,不经感叹,QT 是不是和 mysql 有什么深仇大恨,这里记录一下整个过程,以免不时之需。

Mac 配置 QT

我这里使用QT5,没有那么多问题,安装指令

1
2
brew install qt@5
brew install qt-creator

安装好之后打开 qt-creator,然后在 creator 里配置 qt 的环境,qt 的环境要找到刚刚安装好的 qt 目录,然后在里面找到 qmake,可以直接搜索去找,配置好后如下:

Kits 这里记得也要选上 Qt-version

配置 Mysql 驱动

这一步是最折磨的,配置了足足一天半,首先我们使用 brew install 安装下来的 Qt 默认是没有 mysql 驱动的,只有 sqlite 的驱动,所以我这里的解决方法就是自己编译一个。

去qt 官网下载和自己版本一样的 qt 源码:

https://download.qt.io/archive/qt/

下载好后解压打开,进入目录 /qtbase/src/plugins/sqldrivers/mysql,编辑 mysql.pro 文件(记得去掉我的中文注释):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
TARGET = qsqlmysql

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

# 新增行,写你的 mysql include 路径
INCLUDEPATH += "/opt/homebrew/Cellar/mysql/8.1.0/include"

# 新增行,写你的 mysql lib里的动态链接库路径
# 名字是差不多的,区别是后面的数字,可能是20,21,22,取决于Mysql版本
LIBS += "/opt/homebrew/Cellar/mysql/8.1.0/lib/libmysqlclient.22.dylib"

# 新增行,写 sqldrivers 的路径
DESTIR = "/Users/a214/Downloads/qt-everywhere-src-5.15.12/qtbase/src/plugins/sqldrivers"

# 新增行
PLUGIN_CLASS_NAME = QMYSQLDriverPlugin

# 新增行
include(../qsqldriverbase.pri)

#QMAKE_USE += mysql

OTHER_FILES += mysql.json

QMAKE_USE 要注释掉,然后保存关闭。这里需要注意的是,一定要检查你的 mysql 里的 lib 文件夹的结构,一定要是 lib 文件夹打开后,就有 libmysqlclient.22.dylib 这个文件,不然很坑的,如果没有,就挪一下文件。

然后回到目录 /qtbase/src/plugins/sqldrivers,用终端打开,先要配置环境变量,这里的 QTDIR 写的是你用 brew install 安装的 qt 的目录。

1
2
export QTDIR=/opt/homebrew/Cellar/qt@5/5.15.12
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib

然后执行 qmake,记得加上 mysql 前缀,前缀是你 mysql 的文件位置。

1
qmake -- MYSQL_PREFIX=/opt/homebrew/Cellar/mysql/8.1.0

执行完后,如果成功,你是可以看到如下消息的:

如果没成功,很有可能就是你 mysql 的路径不对,或者 mysql 里的文件结构不对,要检查 lib。修改完之后,在当前目录下搜索 config.cache ,把这个缓存文件删掉,再重新 qmake,不然结果和上次一样(这点卡了很久)。

编译完成后,由于博主没有安装 PostgreSQL ,直接 make 会报错,显示找不到头文件,所以只编译安装 mysql
的文件,终端进入到目录 /qtbase/src/plugins/sqldrivers/mysql,在当前目录执行

1
make install

如果没有报错,就能在你 brew install 安装的 qt 目录下(具体目录也是在 sqldrivers 里)找到 mysql 的驱动啦

然后把这个文件复制一份到 Qt-creator 里的 sqldrivers 里,就大功告成