编译出现的问题

QSqlDatabase: QMYSQL driver not loaded且available drivers中没有QMYSQL。翻阅了很多博客,但是文章以win下的居多。在6.3.1的版本下src里也没有pro工程了。

参考方法

这是官网提供的方法 https://doc.qt.io/qt-6/sql-driver.html#driverwithqt

以下是官网原话
How to Build the QMYSQL Plugin on Unix and macOS
You need the MySQL / MariaDB header files, as well as the shared library libmysqlclient.<so|dylib> / libmariadb.<so|dylib>. Depending on your Linux distribution, you may need to install a package which is usually called “mysql-devel” or “mariadb-devel”.

Tell qt-cmake where to find the MySQL / MariaDB header files and shared libraries (here it is assumed that MySQL / MariaDB is installed in /usr/local) and build:

mkdir build-sqldrivers
cd build-sqldrivers

qt-cmake -G Ninja <qt_installation_path>/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=<qt_installation_path>/<platform> -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.<so|dylib>"
cmake --build .
cmake --install .
  • DCMAKE_INSTALL_PREFIX:QT的安装路径
  • DMySQL_INCLUDE_DIR:mysql的include路径
  • DMySQL_LIBRARY:libmysqlclient.dylib的路径(在mysql的lib目录下)

这里我的第三行命令就是

 /Users/用户名/Qt/6.3.1/macos/bin/qt-cmake -G Ninja /Users/用户名/Qt/6.3.1/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Users/用户名/Qt/6.3.1/macos -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.dylib"

因为是对qt的源码来编译而不是qt本身,所以前提要先有src,没有的话去qt官网下载或者用maintainanceTool将当前版本下的Source勾选上。
qt-cmake在

/Users/用户名/Qt/6.3.1/macos/bin/

ninja在

ninja在qt/tools/Ninja

没有的话自己安装或者用maintainanceTool再添加上也行。可以直接添加环境变量或者在终端直接使用绝对路径。
注意如果是M系列的芯片,则还需要先打开build.ninja,将所有x86_64改成arm64,否则进行build可能会报错

cmake --build .

(不要忘记build后面还有一个.)之后会在创建的build-sqldrivers(一开始mkdir的文件夹,即在/Users/用户名/build-sqldrivers)里面/plugins/sqldrivers下找到libqsqlmysql.dylib

cmake --install .

会自动安装到sqldrivers中(当然也可以手动复制),在打开工程,就连接成功了。(如果出现qt识别了qmysql但是还是未加载的情况,则尝试手动复制到sqldrivers目录下)

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐