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 !