Compilation de QMYSQL sous Windows avec MinGW

zebedee

La méthode générale pour installer le plug-in QMYSQL est de recompiler entièrement Qt ; or, il existe une technique moins lourde.

Commentez

- Titre : Compilation de QMYSQL sous Windows avec MinGW

- Auteur : zebedee

- Parution : 7 janvier 2011

- Mise à jour : 13 octobre 2011

- Licence : Copyright ® 2011 zebedee. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. La méthode

- III. Remerciements

I - Introduction

La documentation de Qt est assez incomplète quant aux instructions de compilation et d'installation du module QMYSQL avec MinGW sous Windows, en utilisant un environnement open source. Cet aspect a été couvert dans plusieurs discussions de ce forum ou ailleurs, mais toutes font appel à une recompilation de Qt avec le support de MySQL. Cette recompilation est parfois délicate et une erreur de packaging de Qt, qui embarque des fichiers tmp, provoque des problèmes (la liste des fichiers à effacer).

Or, il existe une méthode moins lourde, qui consiste à ne recompiler que le module MySQL, qui sera chargé automatiquement par Qt et qui ne nécessite pas la recompilation de Qt avec -qt-sql-mysql.

II - La méthode

Installer les en-têtes C de MySQL dans un chemin n'utilisant pas d'espaces, comme C:\Dev\MySQL. Installer également le client/serveur (car nous aurons besoin de libmysql.dll plus tard), celui-ci peut être placé dans "Program Files" ou autre chemin avec des espaces. Vous pouvez télécharger MySQL sur le site officiel.

Installer Qt. Utiliser l'installeur du SDK et installer par exemple dans C:\Dev\Qt\2010.05\qt. Là encore, ne pas utiliser d'espace dans le nom. Vous pouvez télécharger le Qt SDK sur le site de Nokia.

Télécharger les MinGW Utilities à partir de Sourceforge. À noter que la version 0.4.x ne fonctionne pas. Installer ces utilitaires dans le dossier bin de MinGW.

Ouvrir un Qt Command Prompt. On commence par créer un fichier d'import de bibliothèque compatible avec MinGW :

cd C:\Dev\MySQL\lib\opt
reimp -d libmysql.lib

Ceci crée le fichier LIBMYSQL.def. Ensuite, on crée le fichier libmysql.a.

dlltool -k -d libmysql.def -l libmysql.a

On compile ensuite le plug-in QMYSQL :

cd C:\Dev\Qt\2010.05\qt\src\plugins\sqldrivers\mysql
qmake "INCLUDEPATH+=C:\Dev\MySQL\include" "LIBS+=-LC:\Dev\MySQL\lib\opt -lmysql" mysql.pro
mingw32-make
mingw32-make install

Vérifier que les fichiers du plug-in ont bien été compilés et installés :

C:\Dev\Qt\2010.05\qt\plugins\sqldrivers\libqsqlmysql4.a
C:\Dev\Qt\2010.05\qt\plugins\sqldrivers\libqsqlmysqld4.a
C:\Dev\Qt\2010.05\qt\plugins\sqldrivers\qsqlmysql4.dll
C:\Dev\Qt\2010.05\qt\plugins\sqldrivers\qsqlmysqld4.dll

Copier libmySQL.dll (que l'on trouve dans l'installation du client/serveur de MySQL) dans C:\Dev\Qt\2010.05\qt\bin\. Cela permettra à votre application Qt de fonctionner directement avec le plug-in QMYSQL lors de son appel dans le code.

Il faudra alors distribuer vos applications avec les DLL appropriées :

application.exe
QtCore4.dll
QtSql4.dll
autres DLL de Qt utilisées (QtGui4.dll)
mingwm10.dll
libgcc_s_dw2-1.dll
libmysql.dll
sqldrivers
|  qsqlmysql4.dll

III - Remerciements

Merci à dourouc05 et jacques_jean pour leur aide à la relecture !