Content Table

Qt 编译 MySQL 驱动

很开心 Qt 5.0 发布后好几个版本 Windows 和 Mac 都自带了 MySQL 的驱动,以为以后就省事了。Qt 5.12 时 Windows 下也还带有 MySQL 驱动,不过忽然发现 Mac 下不带了,哎,又只好自己去编译了。

下面就介绍一下我们在 Mac 中编译 MySQL 驱动成功的步骤:

  1. 下载 MySQL 解压版 (macOS 10.14 (x86, 64-bit), Compressed TAR Archive),解压到 /usr/local (不要用 brew 安装)
  2. 命令行进入 MySQL 驱动源码目录: cd /Users/Biao/Qt5.12.4/5.12.4/Src/qtbase/src/plugins/sqldrivers/mysql
  3. 删除 mysql.pro 中的 QMAKE_USE += mysql 这一行
  4. 生成 Makefile 文件: qmake "INCLUDEPATH+=/usr/local/mysql/include" "LIBS+=-L/usr/local/mysql/lib -lmysqlclient" mysql.pro
  5. 编译安装: 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