Compiler et mettre en place le pilote MySQL pour Qt

| BurningMind | dourouc05 |

Suite à beaucoup de questions posées sur le forum sur la compilation du pilote MySQL pour Qt, voici un petit tutoriel pour vous guider tout le long de cette démarche.

Ce tutoriel est uniquement pour Windows. Ne possédant malheureusement pas de Mac, je serais donc dans l'incapacité d'expliquer la démarche avec ce système d'exploitation, mais ce ne doit pas être très différent. Pour GNU/Linux, vous pouvez installer le paquet qt-mysql ou semblable.

Il faut savoir que la démarche est très peu différente pour le compilateur de Microsoft par rapport à MinGW, mais les deux voies seront étudiées ici.

Commentez ♪

- Titre : Compiler et mettre en place le pilote MySQL pour Qt

- Auteurs : BurningMind, dourouc05

- Parution : 7 mars 2012

- Mise à jour : 3 avril 2012

- Licence :

Sommaire

- I. Préparer la compilation

- I-A. MySQL

- I-B. Qt

- II. La grande étape : la compilation !

- II-A. MinGW

- II-B. Visual C++

- III. Placer les DLL obtenues

- IV. Remerciements

I - Préparer la compilation

I-A - MySQL

On va tout d'abord préparer la compilation du pilote QMYSQL.

Tout d'abord, il faut télécharger et installer le package MySQL, téléchargeable sur le site officiel. Choisissez votre système d'exploitation puis la version qui correspond à votre architecture.

Pour ceux qui choisiront une archive, il faut prendre la plus volumineuse et non celle à environ 30 Mo ! Cette dernière ne contient pas les fichiers nécessaires à la compilation de QMYSQL.

Ici, on choisit Windows comme système, puis l'installeur MSI qui correspond à mon architecture (32-bit). Si, après avoir cliqué sur le lien, on vous propose de vous inscrire ou de vous connecter, cliquez sur le lien en bas No thanks. Ensuite, choisir le lien de téléchargement le plus proche de votre lieu de résidence. Le choix entre HTTP et FTP n'a aucune importance.

Une fois le téléchargement fini, exécuter le fichier pour l'installeur ou décompresser l'archive et en placer le contenu dans un répertoire au choix, mais sans espace dans le chemin !

Pour l'installeur, cliquez sur Next et laissez les réglages par défaut. Au choix entre les installations Typical, Custom et Complete, choisir Custom et continuer jusqu'à arriver à :

Dérouler le menu Development Components en cliquant sur le petit + à côté, puis cliquer sur la croix à côté de Embedded server library et choisissir Will be installed on local hard drive. De la même façon, mettre une croix devant toutes les autres fonctionnalités sauf Client C API library. Ensuite, cliquer sur le bouton Browse… en dessous et modifier le répertoire d'installation de telle sorte qu'il n'y ait pas d'espace dans le chemin ! On arrive donc à ceci :

Après un clic sur Next, laisser l'installeur travailler. Une fois l'installation terminée, décocher Launch the MySQL Instance Configuration Wizard et quitter.

Voilà, les fichiers nécessaires de MySQL pour continuer sont installés !

I-B - Qt

Il faut aussi vérifier que l'on dispose bien des fichiers sources de Qt, nécessaires pour compiler le pilote. Si vous avez déjà un répertoire src/ dans le dossier où se situe Qt, vous pouvez passer cette étape.

Se rendre sur la page de téléchargement du site de Qt et télécharger l'archive ZIP ou TAR.GZ.

Une fois téléchargée, décompresser l'archive et déplacer le dossier src/ dans le répertoire où se situe Qt.

II - La grande étape : la compilation !

Voici la dernière (ou presque) étape de ce tutoriel : la compilation ! Grâce à elle, on obtient les DLL du pilote QMYSQL. La compilation est en fait très simple, elle diffère juste un peu avec le compilateur. On va donc séparer les deux alternatives.

II-A - MinGW

Ouvrir l'invite de commande de Qt et lancer les commandes suivantes :

cd %QTDIR%\src\plugins\sqldrivers\mysql
qmake "INCLUDEPATH+=[Chemin vers MySQL]\\include" "LIBS+=[Chemin vers MySQL]\\lib\\libmysql.lib" mysql.pro
mingw32-make -f Makefile.Debug
mingw32-make -f Makefile.Release

Dans la commande qmake, il faut absolument doubler les backslashes. On dit qu'on les échappe, de telle façon qu'ils soient bien pris en compte en tant que backslashes et pas en tant que raccourci avec la lettre qui suit.

II-B - Visual C++

Comme pour MinGW, ouvrir l'invite de commande de Qt et exécuter ces commandes :

cd %QTDIR%\src\plugins\sqldrivers\mysql
qmake "INCLUDEPATH+=[Chemin vers MySQL]\\include" "LIBS+=[Chemin vers MySQL]\\lib\\limysql.lib" mysql.pro
nmake -f Makefile.Debug
nmake -f Makefile.Release

De la même façon qu'avec MinGW, il faut absolument échapper les backslashes dans la commande qmake en les doublant afin qu'ils ne soient pas pris pour des raccourcis.

Dans ces commandes, on se rend d'abord dans le dossier du pilote MySQL. Ensuite, on a lancé qmake en lui précisant les fichiers à inclure de MySQL, puis on a lancé la compilation du pilote modes de débogage et release.

La compilation ne devrait normalement pas prendre beaucoup de temps. En cas d'erreur, vérifier bien qu'il n'y a pas d'espace dans le chemin du répertoire de MySQL et que les backslashes ont bien été échappés dans la commande qmake.

III - Placer les DLL obtenues

Maintenant que le plugin QMYSQL est correctement compilé, il faut judicieusement placer les DLL dans le répertoire du projet.

Tout d'abord, créer un dossier sqldrivers dans le répertoire de votre exécutable, puis y placer la DLL correspondant au mode de compilation (debug ou release) qui se trouve dans [Chemin vers Qt]\plugins\sqldrivers. Elle s'appellera qsqlmysql4d.dll si en débogage et qsqlmysql4.dll sinon.

Ensuite, revenir au répertoire où se situe l'exécutable et y placer la DLL libmysql.dll de [Chemin vers MySQL]\lib.

Voici un petit récapitulatif de la hiérarchie du projet :

En mode de débogage

En release

- projet

- debug

- sqldrivers

- qsqlmysql4d.dll

- projet.exe

- libmysql.dll

- QtCore4d.dll

- QtGui4d.dll

- …

- projet.pro

- main.cpp

- …

- projet

- release

- sqldrivers

- qsqlmysql4.dll

- projet.exe

- libmysql.dll

- QtCore4.dll

- QtGui4.dll

- …

- projet.pro

- main.cpp

- …

Maintenant, MySQL devrait être utilisable avec Qt.

IV - Remerciements

Merci à Thibaut Cuvelier pour sa relecture et la mise en page, ainsi qu'à Maxime Gault pour sa relecture attentive !