macOS 10.13使用Qt 6.5链接MySQL8.0教程

1 篇文章 0 订阅
1 篇文章 0 订阅

环境

  1. Mac OS 10.13
  2. Qt 6.5.3
  3. MySQL 8.1.0
  4. mysql-connector-c-6.1.11-macos10.12-x86_64.dmg

前置条件

  1. 你在安装Qt的时候需要选择sourceNinja,这两个需要使用到;
  2. MySQL我们可以提前配置好环境变量,此处我们使用的bashzsh(Macos的终端使用的是这个),所以我们用户的环境变量的时候需要编辑~/.zshrc,如果不存在可以直接创建,然后加入对应的路径信息,此处简单举例,路径需要以你自己的实际路径为准,因为我的MySQL是通过dmg方式安装的,所以可以在设置中看到我的路径信息,所以我们只需要找出它的路径位置即可代入使用,此处列举我的例子,仅供大家参加:
    export MYSQL_PATH=/usr/local/mysql/bin
    export PATH=$PATH:$MYSQL_PATH
    
    然后关闭终端,重新打开后它就自动生效了

配置Qt所使用工具的环境信息

准备工作

  1. 整理需要使用的路径信息(我会在每个路径后举例,仅供参考)
    1. Qt文件夹所在位置
      /Users/用户名/Qt/6.5.3/macos
      
    2. cmake文件夹所在位置(注意这个路径是在Tools这个文件下打开CMAKE图形化界面,在菜单栏中有一个如何通过命令行配置cmake的选项中给出的路径,推荐大家以其为参考依据)
      /Users/用户名/Qt/Tools/CMake/CMake.app/Contents/bin:$PATH
      
    3. Ninja文件夹所在位置
      /Users/用户名/Qt/Tools/Ninja
      
    至此我们的准备工作基本结束,这些东西大部分位于你说安装的Qt目录下,大家基本可以找到,整理出来方便直接使用

配置环境变量

文件为~/.zshrc,我将逐步写入需要配置的环境变量,直接在文件后追加即可,两句不能在一行哦,每句独占一行;

注意下方路径使用为你上边整理的路径,注意比对切换

  1. 设置Qt文件夹的目录

    export QTDIR=/Users/用户名/Qt/6.5.3/macos	
    
  2. 设置CMAKE的环境变量

    export CMAKE_PATH=/Users/用户名/Qt/Tools/CMake/CMake.app/Contents/bin:$PATH
    
  3. 设置Ninja的环境变量

    export NINJA_PATH=/Users/用户名/Qt/Tools/Ninja
    
  4. 导入所有配置的环境变量

    export PATH=$PATH:$QTDIR/bin:$CMAKE_PATH:$NINJA_PATH
    

    至此我们的环境变量配置完成,关闭终端重新打开,cmakeMySQL应该都可以使用了,大家可以直接将这两个命令,测试一下。

识别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中的MySQLSqLite显示为yes,如此我们识别就成功了,到这里我们已经完成了8/10

编译插件和依赖库信息

cmake --build .

安装

cmake --install .

至此我们需要的依赖库插件就制作好了,我们只需要将它们拷贝到我们的目录下即可

  1. 将文件夹中lib/cmake/Qt6Sql中的关于MySQLcmake识别文件至/Users/用户名/Qt/6.5.3/macos/lib/cmake/Qt6Sql
  2. 将文件夹中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
注意到这里并没有结束,因为这里我们只是可以获取驱动,依旧无法加载驱动,我们需要设置它的链接库指向

设置链接库指向信息

  1. 查看所指向链接库信息
    otool -L libqsqlmysql.dylib
    

通过这个命令,他会展示出它所指向的链接库信息,其中存在一个@rpath/libmysqlclient.{数字}.dylib,拿着它

  1. 修改它的指向信息
    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驱动后无法加载

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值