文章目录大纲
环境
Mac OS 10.13
Qt 6.5.3
MySQL 8.1.0
mysql-connector-c-6.1.11-macos10.12-x86_64.dmg
前置条件
- 你在安装
Qt
的时候需要选择source
和Ninja
,这两个需要使用到; MySQL
我们可以提前配置好环境变量,此处我们使用的bash
为zsh
(Macos
的终端使用的是这个),所以我们用户的环境变量的时候需要编辑~/.zshrc
,如果不存在可以直接创建,然后加入对应的路径信息,此处简单举例,路径需要以你自己的实际路径为准,因为我的MySQL
是通过dmg
方式安装的,所以可以在设置中看到我的路径信息,所以我们只需要找出它的路径位置即可代入使用,此处列举我的例子,仅供大家参加:
然后关闭终端,重新打开后它就自动生效了export MYSQL_PATH=/usr/local/mysql/bin export PATH=$PATH:$MYSQL_PATH
配置Qt
所使用工具的环境信息
准备工作
- 整理需要使用的路径信息(我会在每个路径后举例,仅供参考)
Qt
文件夹所在位置/Users/用户名/Qt/6.5.3/macos
cmake
文件夹所在位置(注意这个路径是在Tools
这个文件下打开CMAKE
图形化界面,在菜单栏
中有一个如何通过命令行配置cmake
的选项中给出的路径,推荐大家以其为参考依据)/Users/用户名/Qt/Tools/CMake/CMake.app/Contents/bin:$PATH
Ninja
文件夹所在位置/Users/用户名/Qt/Tools/Ninja
Qt
目录下,大家基本可以找到,整理出来方便直接使用
配置环境变量
文件为~/.zshrc
,我将逐步写入需要配置的环境变量,直接在文件后追加即可,两句不能在一行哦,每句独占一行;
注意下方路径使用为你上边整理的路径,注意比对切换
-
设置
Qt
文件夹的目录export QTDIR=/Users/用户名/Qt/6.5.3/macos
-
设置
CMAKE
的环境变量export CMAKE_PATH=/Users/用户名/Qt/Tools/CMake/CMake.app/Contents/bin:$PATH
-
设置
Ninja
的环境变量export NINJA_PATH=/Users/用户名/Qt/Tools/Ninja
-
导入所有配置的环境变量
export PATH=$PATH:$QTDIR/bin:$CMAKE_PATH:$NINJA_PATH
至此我们的环境变量配置完成,关闭终端重新打开,
cmake
和MySQL
应该都可以使用了,大家可以直接将这两个命令,测试一下。
识别MySQL
驱动
创建存储编译文件的文件夹
mkdir build-sqldrivers
cd build-sqldrivers
mkdir build
cd build
进行cmake
信息识别
cmake -G "Unix Makefiles" \
/Users/用户名/Qt/6.5.3/Src/qtbase/src/plugins/sqldrivers \
-DCMAKE_PREFIX_PATH=/Users/用户名/Qt/6.5.3/macos \
-DCMAKE_INSTALL_PREFIX=../ \
-DMySQL_INCLUDE_DIR="/usr/local/mysql/include" \
-DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.dylib"
注意此处的第一个路径信息为你的源码文件位置,如果你在类似的位置没有找到它,那可能是因为你没有安装source
需要在Qt
安装工具中先安装哦,其他路径直接代入个人信息就可以,注意此处的这个libmysqlclient.dylib
是通过官方下载的mysql-connector-c-6.1.11-macos10.12-x86_64.dmg
直接安装即可,然后你就可以在MySQL同路径下找到,参考配置即可
执行完成后你会看到Qt Sql Driver
中的MySQL
和SqLite
显示为yes
,如此我们识别就成功了,到这里我们已经完成了8/10
了
编译插件和依赖库信息
cmake --build .
安装
cmake --install .
至此我们需要的依赖库
和插件
就制作好了,我们只需要将它们拷贝到我们的目录下即可
- 将文件夹中
lib/cmake/Qt6Sql
中的关于MySQL
的cmake
识别文件至/Users/用户名/Qt/6.5.3/macos/lib/cmake/Qt6Sql
中 - 将文件夹中
plugins/sqldrivers/
下的libqsqlmysql.dylib
动态库文件至/Users/用户名/Qt/6.5.3/macos/plugins/sqldrivers
中
测试
find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets Sql REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets Sql
target_link_libraries(untitled PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Sql)
注意此处我们只是将Sql
这个组件加入到了我们Qt
项目的cmakelist.txt
文件中
通过一下测试代码应该就可以获取到驱动信息列表
了
#include <QApplication>
#include <QSqlDatabase>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
qDebug()<<"available drivers:";
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug()<<driver;
return a.exec();
}
打印信息中别的不说至少你可以看到QMYSQL
了
注意到这里并没有结束,因为这里我们只是可以获取驱动,依旧无法加载驱动,我们需要设置它的链接库指向
设置链接库指向信息
- 查看所指向链接库信息
otool -L libqsqlmysql.dylib
通过这个命令,他会展示出它所指向的链接库信息,其中存在一个@rpath/libmysqlclient.{
数字}.dylib
,拿着它
- 修改它的指向信息
install_name_tool -change @rpath/libmysqlclient.22.dylib /usr/local/mysql/lib/libmysqlclient.22.dylib /Users/用户名/Qt/6.5.3/macos/plugins/sqldrivers/libqsqlmysql.dylib
注意此处替换信息,然后执行后MySQL
的驱动就可以正常使用了,如果出现问题可以及时交流,也可以参考原帖,此帖为两篇不同平台的帖子的整合与翻译,不足之处,还请指正,让我们一起让学习c++
和Qt
不再艰难。感谢两位大佬的帖子救我于生死存亡之际,特撰此贴以作纪念,以帮助更多有需要的人,谢谢
引用
原帖1: MacOS下 Qt6编译及链接MySQL
原帖2:macOS安装Qt6驱动后无法加载