Windows: MariaDB-Driver-Plugin mit MinGW 11.2.0 und Qt 6.5.2 (64-bit) erstellen

 Beim programmieren mit Qt6-Windows kommt man früher oder später an den Punkt an dem man eine Verbindung zu einer Datenbank benötigt. Leider muss man bei den Windows Versionen von Qt die benötigten SQL-Driver-Plugins in Eigenregie kompilieren. Dieser Beitrag beschreibt die dazu nötigen Schritte.
 

Was dieser Beitrag nicht beschreibt:

Hier wird nicht beschrieben wie Qt und MariaDB installiert werden. Es wird vorausgesetzt, dass bereits funktionierende Installationen der Software vorhanden sind.
Die in diesem Beitrag verwendeten Software Versionen sind: Qt 6.5.2 MinGW 64-bit und der MariaDB Connector C 3.1.11 64-bit, da hier kein lokaler MariaDB Server benötigt wird.
 

Vorbereitung:

Im Qt Verzeichnis (C:\Qt\6.5.2\mingw_64\bin) mussten die Batch Dateien qtenv2.bat und qt-cmake.bat an die lokale Umgebung angepasst werden.

qtenv2.bat:

@echo off
echo Setting up environment for Qt usage...
set PATH=C:\Qt\6.5.2\mingw_64\bin;C:\Qt\Tools\mingw1120_64\bin;%PATH%
cd /D C:\Qt\6.5.2\mingw_64

qt-cmake.bat:

@echo off
:: The directory of this script is the expanded absolute path of the "$qt_prefix/bin" directory.
set script_dir_path=%~dp0

:: Try to use original cmake, otherwise to make it relocatable, use any cmake found in PATH.
::set cmake_path=C:/CMake/bin/cmake.exe
set cmake_path=C:/Qt/Tools/CMake_64/bin/cmake.exe
if not exist "%cmake_path%" set cmake_path=cmake

set toolchain_path=%script_dir_path%/../lib/cmake/Qt6/qt.toolchain.cmake
"%cmake_path%" -DCMAKE_TOOLCHAIN_FILE="%toolchain_path%"  %*
 

Kompilieren und installieren

Die Qt-Eingabeaufforderung (CMD) starten, ein Build Verzeichnis erstellen und in dieses wechseln.

mkdir compile-driver

cd compile-driver
 
Die Sourcen konfigurieren, die Verzeichnisse und Versionen müssen natürlich an die eigenen Bedürfnisse angepasst werden.
C:\Qt\6.5.2\mingw_64\bin\qt-cmake.bat -G "MinGW Makefiles" C:\Qt\6.5.2\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=C:\Qt\6.5.2\mingw_64 -DMySQL_INCLUDE_DIR="C:\Program Files\MariaDB\MariaDB Connector C 64-bit\include" -DMySQL_LIBRARY="C:\Program Files\MariaDB\MariaDB Connector C 64-bit\lib\libmariadb.lib"
 
Wurde die Konfiguration ohne Fehler ausgeführt, kann man das Plugin kompilieren.
C:/Qt/Tools/CMake_64/bin/cmake.exe --build .
 
und abschließend in das Qt Plugin Verzeichnis (C:\Qt\6.5.2\mingw_64\plugins\sqldrivers) installieren.
C:/Qt/Tools/CMake_64/bin/cmake.exe --install .
 

Hinweis

  • Die libmariadb.dll aus <MariaDB dir>\lib in das entsprechende MinGW Verzeichnis von Qt (C:\Qt\6.5.2\mingw_64\bin) kopieren.
  • Beim verteilen der Anwendung daran denken, dass die libmariadb.dll in das Installationspaket aufgenommen werden muss. Die DLL muss im selben Ordner wie die ausführbare Datei der Anwendung abgelegt werden.
E67 Blog Beiträge
  • Windows: MariaDB-Driver-Plugin mit MinGW 11.2.0 und Qt 6.5.2 (64-bit) erstellen

    Mehr ...

  • Windows: MariaDB-Driver-Plugin mit MinGW 11.2.0 und Qt 6.4.1 (64-bit) erstellen

    Mehr ...

  • Windows: MariaDB-Driver-Plugin mit MinGW 8.1.0 und Qt 5.15.2 (64-bit) erstellen

    Mehr ...

  • Windows: MariaDB-Driver-Plugin mit MinGW 11.2.0 und Qt 6.2.3 (64-bit) erstellen

    Mehr ...

  • VMware
    VMware Wokstation Pro: Cannot open /dev/vmmon

    Mehr ...

  • Linux: Die sterr-Ausgabe im Qt Creator wieder aktivieren

    Mehr ...

  • Raspbian: phpLDAPadmin mit nginx installieren und konfigurieren

    Mehr ...

  • Raspbian: LDAP Server/Client installieren und konfigurieren

    Mehr ...

  • Raspbian: Usermin installieren

    Mehr ...

  • Raspbian: UDEV-Regel für externe Hdd‘s

    Mehr ...

  • Raspbian: Webmin installieren

    Mehr ...

  • Skrooge 2.4.0 aus den Quellen kompilieren und installieren

    Mehr ...

  • SDDM/Plasma5: KWallet automatisch beim Login öffnen

    Mehr ...

  • Windows: MySQL-Driver-Plugin mit MinGW 4.9.2 und Qt 5.5.1 (32-bit) erstellen

    Mehr ...

  • Windows: MySQL-Driver-Plugin mit MinGW 4.9.2 und Qt 5.5.1 (64-bit) erstellen

    Mehr ...

  • HTTP-Status-Codes

    Mehr ...

  • Dynamische oder statische Webseite?

    Mehr ...