Mac M1 Qt连接MySQL

一、软件版本

  • Qt 6.5.0
  • Qt Creator 10.0.1
  • mysql 8.0.31-arm64

二、安装Qt

通过Qt维护工具安装Qt

选择macOS和Source

三、编译MySQL驱动

在/Users/haikez/Qt/6.5.0/macos/plugins/sqldrivers下可以看到所有数据驱动,默认是没有libsqlmysql.dylib的。我们要做的就是编译生成它。

3.1 设置环境变量

1
2
3
4
export QTDIR=/Users/haikez/Qt/6.5.0/macos
export CMAKE_PATH=/Users/haikez/Qt/Tools/CMake/CMake.app/Contents/bin
export NINJA_PATH=/Users/haikez/Qt/Tools/Ninja
export PATH=$PATH:$QTDIR/bin:$CMAKE_PATH:$NINJA_PATH

3.2 开始编译

在~目录下,执行

1
2
mkdir build-sqldrivers
cd build-sqldrivers
1
2
3
4
qt-cmake -G"Ninja" /Users/haikez/Qt/6.5.0/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Users/haikez/Qt/6.5.0/macos -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.dylib" -DCMAKE_OSX_ARCHITECTURES="arm64"

#Mac m1用户需要加一项设置
# DCMAKE_OSX_ARCHITECTURES="arm64"

执行完上面的命令会再目录下生成如下文件

需要注意的是,Mac m1用户需要把build.ninja文件内的x86_64换成arm64,执行如下命令:

1
sed -i -e 's/-arch x86_64/-arch arm64/g' build.ninja

编译运行

1
2
cmake --build .
cmake --install

编译完会在目录下生成驱动文件

3.3 修改驱动地址

1
2
cd /Users/haikez/Qt/6.5.0/macos/plugins/sqldrivers 
otool -L libqsqlmysql.dylib

红色方框的mysql动态连接驱动并不是正确的这时候需要修改动态连接

1
2
3
4
install_name_tool  -change 
/usr/local/mysql/lib/libmysqlclient.21.dylib (红色框中的路径地址)
/usr/local/mysql/lib/libmysqlclient.dylib(mysql实际驱动的地址)
/Users/haikez/Qt/6.5.0/macos/plugins/sqldrivers/libqsqlmysql.dylib(qt mysql的驱动地址)

三个地址一个不能少,也不能错,修改成功后重新输入otool -L libqsqlmysql.dylib 可以查看到地址已经被修改成正确的文件路径

-------------本文结束感谢您的阅读-------------