很开心 Qt 5.0 发布后好几个版本 Windows 和 Mac 都自带了 MySQL 的驱动,以为以后就省事了。Qt 5.12 时 Windows 下也还带有 MySQL 驱动,不过忽然发现 Mac 下不带了,哎,又只好自己去编译了。
下面就介绍一下我们在 Mac 中编译 MySQL 驱动成功的步骤:
- 下载 MySQL 解压版 (macOS 10.14 (x86, 64-bit), Compressed TAR Archive),解压到
/usr/local
(不要用 brew 安装) - 命令行进入 MySQL 驱动源码目录:
cd /Users/Biao/Qt5.12.4/5.12.4/Src/qtbase/src/plugins/sqldrivers/mysql
- 删除 mysql.pro 中的
QMAKE_USE += mysql
这一行 - 生成 Makefile 文件:
qmake "INCLUDEPATH+=/usr/local/mysql/include" "LIBS+=-L/usr/local/mysql/lib -lmysqlclient" mysql.pro
- 编译安装:
make && make install
,然后在 Qt 的plugins/sqldrivers
目录下就能看到 MySQL 的驱动 libqsqlmysql.dylib 了
编译的过程中出现下面的警告,忽略即可:
Cannot read /Users/Biao/Qt5.12.4/5.12.4/Src/qtbase/src/plugins/sqldrivers/qtsqldrivers-config.pri: No such file or directory
随便提一下,按照 Qt 自带帮助文档中的步骤进行编译:
cd $QTDIR/qtbase/src/plugins/sqldrivers
qmake – MYSQL_PREFIX=/usr/local
make sub-mysql
报错:
Cannot read /Users/Biao/Qt5.12.4/5.12.4/Src/qtbase/src/plugins/sqldrivers/qtsqldrivers-config.pri: No such file or directory
Project ERROR: Library ‘mysql’ is not defined.
可能是因为 MySQL 的安装问题吧,但是文档里也没提示这种情况下 Mac 里 MySQL 应该怎么安装,具体就不深入研究了,反正上面的方式能编译成功。
Windows 编译时参考上面 Mac 的步骤,只需要把第 4 步中的
-lmysqlclient
修改为-lmysql
,其他步骤不变,使用 MinGW 编译参考下面 2 条命令:
F:\Qt\Qt5.13.0\5.13.0\mingw73_32\bin\qmake.exe "INCLUDEPATH+=D:/mysql-5.7.29-win32/include" "LIBS+=-LD:/mysql-5.7.29-win32/lib -lmysql" mysql.pro
F:\Qt\Qt5.13.0\Tools\mingw730_32\bin\mingw32-make.exe
编译出来的 DLL 在目录 F:\Qt\Qt5.13.0\5.13.0\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers 中