一、系统环境
-
Mac M1 芯片 MacOS 12.3
-
Qt 6.4.2(已经勾选上source)
-
mysql 8 Arm 版本 (当前只有这一种版本,一定要安装这个版本,要不然下面cmake编译那步不会成功)
-
Qt 路径
/Users/username/Qt/6.4.2/Src(高亮部分替换成自己的名称,下面会重复利用)如果Qt的版本、放置的位置和我不一致,这里也要替换成自己的名称和路径
-
mysql路径
/usr/local/mysql
二、编译前安装步骤
Step1
在电脑上安装ninja,后面需要用ninja来进行编译。
可以参考该网址的4个步骤来进行安装。
三、编译步骤
Step1
打开terminal,输入下面的代码,进入Qt下的Src文件夹中。
cd /Users/username/Qt/6.4.2/Src
Step2
在Src文件夹的命令行,输入下面的代码。
./configure -sql-mysql -- -DCMAKE_INCLUDE_PATH="/usr/local/mysql/include" -DCMAKE_LIBRARY_PATH="/usr/local/mysql/lib"
Step3
输入下面的代码,进入编译后sqldrivers文件夹。
cd /Users/username/Qt/6.4.2/macos/plugins/sqldrivers
Step4
在sqldrivers文件夹路径下的命令行,运行下面的代码。
mkdir build_sqldrivers
cd build_sqldrivers
Step5
在build_sqldrivers文件夹路径下的命令行,执行下面的代码。
/Users/username/Qt/6.4.2/macos/bin/qt-cmake -G Ninja /Users/username/Qt/6.4.2/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Users/username/Qt/6.4.2/macos -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.dylib" -DCMAKE_OSX_ARCHITECTURES="arm64"
Step6
接着执行下面的代码
sed -i -e 's/-arch x86_64/-arch arm64/g' /Users/username/Qt/6.4.2/macos/plugins/sqldrivers/build_sqldrivers/build.ninja
Step7
在build_sqldrivers文件夹路径下的命令行,执行下面的代码。
cmake --build .
接着执行下面的代码。
cmake --install .
Step8
在build_sqldrivers文件夹路径下的命令行,输入下面的代码,找到生成的位置
find ~/Qt -name libqsqlmysql.dylib
四、使用部分
Step1
将生成的编译文件libsqlmysql.dylib复制到sqldrivers文件夹中,即下面的路径下的文件夹。
cd /Users/username/Qt/6.4.2/macos/plugins/sqldrivers
Step2
打开Qt Creator中自己构建的mysql测试项目,没有的话,可以参考我这个。
#include <QApplication>
#include <QSqlDatabase>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
qDebug()<<"drives: ";
QStringList drivers = QSqlDatabase::drivers(); //获取现在可用的数据库驱动
foreach(QString driver, drivers)
qDebug() << driver;
QSqlDatabase database = QSqlDatabase::addDatabase("QMYSQL");
database.setHostName("127.0.0.1");
database.setDatabaseName("test");
database.setUserName("root");
database.setPassword("123456");
database.setPort(3306);
if (database.open()) {
qDebug() << "连接数据库成功";
} else {
qDebug() << "连接数据库失败";
}
// Widget w;
// w.show();
return a.exec();
}
在运行的时候,可能还会弹出下面的窗口。
这时候,需要先点击sqldrivers文件夹下的ibqsqlmysql.dylib,然后再打开设置,在安全性与隐私中允许运行该程序,成功后如下面第二个图所示。
Step3
再在Qt Creator中运行该程序,结果如下图所示。
💐💐💐恭喜,你也在Mac Arm版本中,完成了mysql驱动的编译。