Последнее обновление:
May 24, 2021

Есть мысль... Жми, напиши!
Что имеем: Постов : 142 Авторов: 1 Категорий: 22

Компиляция MySQL 8.0 для Qt5/Qt6 на Windows (x32/x64)

В коробке QtCreator идёт без дров для MySQL  пичалька…
Почему? Из-за несовместимости лицензий. Но мы можем их скомпилировать самостоятельно!

Для начала необходимо скачать MySQL

Обновил для MySQL 8.0 и Qt 5.14 (c 5.12 не соберётся!)
Добавил для MySQL 8.0 / Maria DB и Qt 6.2

Важно: MysqlServer есть только под x64 архитектуру, поэтому Ваши проекты так же должны собираться компилятором под x64, поэтому не забудьте доставить MinGW x64 с помощью MaintenanceTool.exe из папки с Qt.
Так же при установке Qt нужно, что бы была отмечена установка исходников! Если устанавливали без Sources, то через MaintenanceTool.exe можете доставить.
Только обязательно той же версии!

0. Нужно скачать заголовочные файлы MySQL.

Страница загрузки: http://dev.mysql.com/downloads/mysql/

Для установки полной версии всего установщик назывался: «mysql-installer-community-8.0.25.0.msi«
Для установки только заголовочных и необходимым библиотек отметил следующее (в коннекторе заголовочных mysql.h нет):

ЛИБО качать готовый архив со всеми нужными файлами, называется «mysql-8.0.25-winx64.zip» после скачивания распаковываете куда-нить.

Дальше всё должно быть просто:

1. Открываем консольку (cmd) и не закрываем пока не закончим. Необходимо добавить в системную переменную Path пути к Qt (только замените на свои):

set PATH=C:\Qt\5.4\mingw491_32\bin;%PATH% (Там, где лежит qmake.exe)
set PATH=C:\Qt\Tools\mingw491_32\bin;%PATH% (там, где лежит mingw32-make.exe)

ВАЖНО!
Убедитесь, что в PATH у Вас нет никаких путей до других версий Qt и компиляторов, а то будет куча непонятных ошибок. Можно в консольке ввести echo %PATH% и посмотреть, что сейчас там.
Так же важно, что бы версия MinGW совпадала с той, что стоит в комплекте из параметров QtCreator:

И что бы именно этот комплект использовался при сборке Ваших приложений. Пути можно подсмотреть на вкладке «Профили Qt» и «Компиляторы»

Для Qt 5.x

cd C:\Qt\5.14\Src\qtbase\src\plugins\sqldrivers\mysql
qmake.exe -o MakeFile "INCLUDEPATH+=\"C:/Program Files/MySQL/MySQL Server 8.0/include\"" "LIBS+=\"C:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib\"" "LIBS+=-L\"C:/Program Files/MySQL/MySQL Server 8.0/lib"" mysql.pro
mingw32-make -f MakeFile.release
Если будет ругаться «Cannot read qtsqldrivers-config.pri»,
то в файле «qsqldriverbase.pri», который в диектории уровнем выше,
закомментируйте:
#include($$shadowed($$PWD)/qtsqldrivers-config.pri)
Когда ругнётся на «Project ERROR: Library mysql is not defined»,
то в «mysql.pro» закомментируйте:
#QMAKE_USE += mysql

Только пути не забудьте на свои поменять.
И особое внимание к расстановке и направлению слэшей!

Для Qt 6.x
MySQL беру из скачанного архива.

ВАЖНО!
В PATH должен быть так же прописан путь до CMake.exe!
Его можно установить из Qt «MaintanceTool.exe«.
Если в PATH их будет несколько (если кто-либо ещё какие-либо пути в PATH вносил, где есть cmake.exe) может быть множество непонятных ошибок. Так же должен болтаться в PATH и сборщик Ninja.
Важно, что бы разрядность совпадала!

set PATH=E:/Qt/Tools/CMake_64/bin;%PATH%
set PATH=E:/Qt/Tools/Ninja;%PATH%

Ладно, собираем:

E:
cd E:\Qt\6.2.0\Src\qtbase\src\plugins\sqldrivers
mkdir build-sqldrivers
cd build-sqldrivers
set toolchain_path=E:/Qt/6.2.0/mingw81_64/lib/cmake/Qt6/qt.toolchain.cmake
cmake -G"Ninja" ../ -DMySQL_INCLUDE_DIR="D:/Projects/MysQL/include" -DMySQL_LIBRARY="D:/Projects/MySQL/lib/libmysql.lib" -DCMAKE_TOOLCHAIN_FILE="%toolchain_path%"
cmake --build .

Только пути не забудьте на свои заменить.
И особое внимание к расстановке и направлению слэшей!

Допустим, сборка успешно закончилась.

По идее в каталоге sqldrivers\plugins\sqldrivers должен появится файл:

qsqlmysql.dll

КЭП подсказывает, что это и есть то, что нужно (релизная версия).
Его нужно будет скопировать вручную в папку «Qt/5.14/mingw730_64/plugins/sqldrivers«

Если когда после запуска приложения в выхлопе будет:

warning unknown: QSqlDatabase: QMYSQL driver not loaded
warning unknown: QSqlDatabase: available drivers: QMYSQL

Надо бы скопировать  libmySQL.dll, libssl-1_1-x64.dll и libcrypto-1_1-x64.dll  (из папки C:/Program Files/MySQL/MySQL Server 8.0/lib или из папки с распакованным архивом из подпапок lib и bin) в папку C:/windows, либо таскать рядом с exe`шником будущей программы, либо добавить глобально путь в PATH, либо же их можно бросить туда же, куда и qsqlmysql.dll.

Если всё равно что-то не то, то качаете http://dependencywalker.com,
натравливаете его на dll файл или программу в целом и смотрите, какие зависимости ей нужны.

Официальное руководство по компиляции для Qt 6.x: https://doc.qt.io/qt-6/sql-driver.html

Должно быть всё ок.

Happy End.

Views :

9114

Qulitech 9G530 и другие…. запись для вопросов

Весь материал перемещен на СТАНКОФОРУМ

Views :

954