Installation de Qt 4 Open Source, avec le support pour MySQL, Firebird et OpenSSL sous Windows
Ce tutoriel s'adresse aux utilisateurs de Qt 4 sous Windows désirant activer le support d'OpenSSL, MySQL ou Firebird. Vous pourrez bien évidemment activer ces supports indépendamment. Qt 4 est un outil de développement extrêmement puissant qui permet de réaliser en C++ des applications multiplateforme. Par défaut, cet outil, n'est configuré que pour supporter la base de données SQLite, ce qui n'est pas suffisant pour manipuler avec performance une quantité élevée de données. Le support d'OpenSSL n'est pas non plus activé, ce qui peut être gênant si vous devez mettre en place un protocole de communication sécurisé. Les informations que j'ai trouvées n'ont pas suffit à régler mes problèmes, mais j'ai fini par trouver la solution. J'ai donc décidé d'écrire ce petit guide pour ceux qui en auraient besoin.
Si vous devez disposer d'une base de données, les plus simples à mettre en oeuvre sont MySQL et Firebird. La première peut être distribuée librement si votre projet est Open Source, la seconde peut être distribuée librement même si votre projet est commercial, mais dans ce cas il vous faudra une version commerciale de Qt... OpenSSL peut être utilisé librement même si le projet est commercial. Ce guide détaille les étapes de l'installation de tous ces composants et de leur configuration. La version de Qt utilisée est la 4.3.3 Open Source et le compilateur utilisé est g++ (porté sous Windows grâce au projet MinGW).
Les versions des programmes utilisés pour ce guide peuvent être téléchargées ici : ftp-developpez.com/giminik/C++/Qt4/installation-mysql-firebird-openssl
Installation de Qt et le compilateur MinGW
La première chose à faire est d'aller télécharger la version Open Source de Qt 4 sur le site de Trolltech. On prendra soin de choisir la version exécutable et non la version zippée. La première dispose d'un installeur qui s'occupe de mettre en place la suite MinGW. Ici, j'ai téléchargé le fichier qt-win-opensource-4.3.3-mingw.exe. On double-clique sur ce fichier. Si MinGW est déjà installé, il suffit d'indiquer où se trouve son répertoire d'installation, dans le cas contraire, on coche la case télécharger et installer. Il est vivement déconseillé de mettre des espaces dans les noms des répertoires d'installation sous peine de nuire au bon fonctionnement. Ici, j'ai installé Qt dans le répertoire C:\Qt\4.3.3. J'ai choisi de télécharger et d'installer MinGW dans le répertoire C:\MinGW.
Si vous installez Qt sous Vista, vous devrez ajouter dans le fichier suivant C:\Qt\4.3.3\bin\qtvars.bat la ligne en gras :
set PATH=C:\Qt\4.3.3\bin set PATH=%PATH%;C:\MinGW\bin set PATH=%PATH%;%SystemRoot%\System32 set PATH=%PATH%;C:\MinGW\libexec\gcc\mingw32\3.4.2 set QMAKESPEC=win32-g++
MinGW est maintenant installé, mais il s'agit d'une version de base. On va ensuite compléter les fonctionnalités de MinGW en installant le paquet mingw-utils et le débogueur gdb. On télécharge ensuite le paquet mingw-utils sur le site officiel puis on extrait son contenu dans le dossier C:\MinGW de façon à ajouter un utilitaire indispensable à l'ajout du support de MySQL. On télécharge ensuite le paquet mingw-debugger, ne pas hésiter à prendre la dernière version... On extrait également tout son contenu dans C:\MinGW.
Préparation à la compilation
Pour les développements que j'avais à faire, il me fallait une base de données. Je me suis d'abord tourné
vers MySQL mais la licence est restrictive si l'on veut faire du commercial. J'ai ensuite décidé d'utiliser
Firebird car son utilisation est totalement libre et elle est très performante. Je vais donc détailler la mise
en place du support pour ces deux bases puisque je les ai mises en place.
Enfin, pour la mise en place de communications réseau sécurisées, j'avais besoin de pouvoir utiliser la classe
QSslSocket disponible
uniquement en activant le support d'OpenSSL. Bien sûr, en phase de développement, il est nécessaire de pouvoir
déboguer ses programmes... Afin de répondre à tous ces pré-requis, nous allons donc recompiler Qt afin d'activer
le mode debug, le support de MySQL, Firebird, et OpenSSL.
Installation des bases de données
Dans un premier temps, on installe les bases de données. Il est important de choisir d'installer les fichiers de développement (include ou header) pour pouvoir activer le support de ces bases de données.
Installation de MySQL
Ici, j'ai téléchargé le fichier mysql-essential-5.0.45-win32.msi sur la page de téléchargement de MySQL. Pour MySQL, il faut choisir une installation personnalisée. On peut alors choisir d'installer les include files et les lib files. Pour ce guide, j'ai choisi d'installer MySQL dans le répertoire C:\MySQL-5.0. Les include files seront alors situés dans le répertoire c:\MySQL-5.0\include et les lib files seront situés dans c:\MySQL-5.0\lib\opt.
Il ne faut pas oublier d'installer les fichiers de développement.
On ouvre la console Qt (Démarrer/Programmes/Qt by Trolltech v4.3.3 (OpenSource)/Qt 4.3.3 Command Prompt). Les bibliothèques fournies par MySQL ont été compilées sous Visual C++ et ne sont pas compatibles avec le compilateur fourni avec MinGW. Il faut donc les convertir. Cela se fait très facilement avec les outils optionnels de MinGW. Dans la console, on tape les commandes suivantes :
cd C:\MySQL-5.0\lib\opt reimp -d libmysql.lib
Les deux lignes précédentes ont normalement crée un fichier libmysql.def qui contient la liste des symboles contenus dans la bibliothèque limysql.lib. La ligne ci-après permet de recréer une bibliothèque compatible avec le compilateur MinGW à partir de la DLL libmysql.dll et du fichier de symboles. Il est important de bien nommer le fichier de sortie en libmysql.a.
dlltool -k --input-def libmysql.def --dllname libmysql.dll --output-lib libmysql.a
Installation de Firebird
On installe Firebird que l'on peut télécharger sur www.firebirdsql.org). On choisit Super Serveur et on installe les composants pour développeurs (les header et lib). Ici, j'ai choisi d'installer le serveur dans C:\Firebird_2_0.
Il ne faut pas oublier d'installer les fichiers de développement.
Dans la console Qt (Démarrer/Programmes/Qt by Trolltech v4.3.3 (OpenSource)/Qt 4.3.3 Command Prompt), on tape les commandes suivantes :
cd C:\Firebird_2_0\lib copy fbclient_ms.lib libfbclient.a
Afin que la compilation de Qt 4 se fasse sans encombres, on édite le fichier
C:\Qt\4.3.3\src\sql\drivers\drivers.pri et, à la ligne 99 environ, on remplace
!win32-borland:LIBS *= -lgds32_ms par
!win32-borland:LIBS *= -lfbclient.
Installation d'OpenSSL
On choisit une version déjà compilée, ce qui facilite les choses sous Windows. Pour ce faire, nous allons télécharger la dernière version d'OpenSSL. On veillera à ne pas prendre la version light car elle ne contient pas les headers nécessaires pour ajouter le support dans Qt. Ici, j'ai téléchargé le fichier Win32OpenSSL-0_9_8g.exe et je l'ai installé dans le répertoire C:\OpenSSL. Lors de l'installation, deux DLL sont copiées dans C:\windows\system32 : ssleay32.dll et libeay32.dll. Nous les copierons dans C:\Qt\4.3.3\bin afin d'éviter d'écraser la version présente dans le dossier system32 au cas où l'on installerait une nouvelle version...
Recompilation de Qt 4
Nous sommes donc prêts à lancer la compilation de Qt pour ajouter le support à tous ces éléments. Dans la console
Qt, on se place dans le répertoire cd C:\Qt\4.3.3 et on lance la configuration. La commande est écrite
sur quatre lignes pour plus de lisibilité mais il faudra la taper sur une seule. Vous pourrez l'adapter à vos
besoins, si vous devez par exemple, n'utiliser que MySQL...
configure.exe -debug-and-release -qt-sql-ibase -I C:\Firebird_2_0\include -L C:\Firebird_2_0\lib -qt-sql-mysql -I C:\MySQL-5.0\include -L C:\MySQL-5.0\lib\opt -openssl -I C:\OpenSSL\include -L C:\OpenSSL\lib\MinGW
Une fois la configuration effectuée, on lance la compilation en tapant make.
Vous pouvez aller prendre plusieurs cafés, faire une sieste ou encore aller faire une petite promenade.
Distribuer une application
D'abord, si vous devez compiler votre application en mode debug, vous devrez taper make debug et
si vous voulez compiler en mode normal make release. Vous devrez distribuer avec l'exécutable
généré, les DLL requises :
- La DLL MinGW mingwm10.dll ;
- Les DLL des modules Qt utilisés. Elles sont contenues dans le dossier C:\Qt\4.3.3\bin et suffixées de la lettre d pour la version debug ;
- Si l'on utilise le module sql, on devra ajouter les DLL Firebird (fbclient.dll) et MySQL (libmySQL.dll) puisque leur support a été activé ;
- Si l'on utilise le module network, on devra ajouter les DLL OpenSSL (ssleay32.dll et libeay32.dll) car leur support a été activé.
Pour faciliter mes développements, j'ai modifié le script qui est lancé lorsque l'on lance la console Qt : C:\Qt\4.3.3\bin\qtvars.bat. J'y ai modifié la variable d'environnement PATH afin que les DLL de MySQL et Firebird soient trouvées par le programme lancé. Pour vérifier les dépendances de DLL, vous pouvez utiliser Dependency Walker. Enfin, vous pouvez tester votre application sur une machine sur laquelle ne sont pas installé MinGW, Qt, OpenSSL, MySQL et Firebird.
Enfin, pour tester que le support de ces éléments a bien été activé, vous pouvez télécharger l'archive de tests. Lisez les instructions dans les fichiers main.cpp, la procédure est très simple.
Je tiens à remercier RideKick pour avoir relu cet article.