Complier Qt en Static sous Windows

Lorsque l'on crée une application pour Linux avec Qt on peut être intéressé par la rendre multiplateforme. Sous Linux, Qt est généralement installé par défaut, ou dans le cas contraire facilement installable avec le gestionnaire de paquets systèmes. Mais sous windows, installer Qt est plus compliqué et plus lourd. Ce n'est pas une habitude sous windows de demander d'installer des dépendances. C'est pourquoi il peut être intéressant de compiler Qt en static. Ainsi, lors de la création de l'exécutable avec la version Static, le programme embarquera Qt et vos utilisateurs n'auront absolument pas besoin de l'installer. Voici la démarche.

Mise en oeuvre

Notez que toutes ces opérations se font bien sûr sous Windows.

1. Installation de Qt Dynamique + sources

Installez Qt 5.5 (ou une autre version 5.x selon votre choix et ce qui est disponible) grâce à l'installateur fournit par Qt ici. Il est primordial de sélectionner pour cette version, mingw32 ainsi que les sources, qui seront nécessaires pour la compilation de la version static ensuite. Notez que QtCreator sera installé avec le reste, nul besoin de l'installer à part.

2. Installation des dépendances nécessaires à la compilation

Pour chaque programme, choisissez d'ajouter le programme dans le PATH lorsque cela vous est proposé (cocher la case dans l'installateur). Commencez par installer python en téléchargeant la dernière version 3.x sur leur site. Installez ensuite perl (sous windows ce sera Strawberry-perl). Enfin, installez ruby, en téléchargeant la dernière version de Rubyinstaller depuis leur site. Notez que si vous avez un Windows 64 bits, vous pouvez prendre la version 64 bits de ces programmes (bien que Qt sous windows soit en 32bits avec mingw32).

3. Modifier les mkspecs de Qt pour rendre la compilation static

Ouvrez le fichier C:Qt5.5Srcqtbasemkspecswin32-g++qmake.conf (à adapter selon votre version de Qt), recherchez dans ce fichier la ligne suivante :

QMAKE_LFLAGS            =

et la remplacer apr :

QMAKE_LFLAGS            = -static -static-libgcc
4. Préparation de la compilation :

Ouvrez la console Qt (Menu démarrer --> Tous les programmes --> Qt --> 5.5 --> Qt 5.5 for Desktop (MinGW 4.9.2 32 bit)       [Ceci peut légèrement différer en fonction de votre version de Qt et de MinGW]. Vérifiez que les différentes dépendances sont bien dans le path : Exécuter les commandes suivantes :

python ––version ruby ––version perl ––version

Chaque commande doit vous donner la version et vous ne devez en aucun cas avoir pour réponse que la commande est inconnue : checkDeps Si une commande n'est pas le path, contactez-moi par commentaire pour avoir de l'aide (mais si vous avez bien suivi ce tuto tout devrait aller !).

5. Lancement de la compilation :

Dans la console allez dans le dossier qtbase des sources :

cd C:\Qt5.5\Src\qtbase

Lancez la configuration de la compilation :

configure -static -release -opengl desktop -opensource -platform win32-g++

Répondre y pour accepter la licence. Puis attendre quelques minutes que l'exécution se termine. Quand c'est terminé, lancez la compilation :

mingw32-make sub-src

Attendre que la compilation se termine. Ceci peut prendre plusieurs heures.

6. Configurer Qt Creator pour qu'il utilise la version Qt STATIC

Ouvrez Qt creator. Allez dans les options (Outils --> Options...), dans l'onglet Compiler & Exécuter. Dans l'onglet Versions de Qt, sélectionnez Ajouter... et allez chercher l'exécutable qmake se trouvant dans C:\Qt5.5\Src\qtbase\bin. Dans l'onglet Kits, ajouter un nouveau kit avec la version de Qt précédemment ajoutée : qtcreator

7. Compiler mon application Qt en STATIC

Vous n'avez plus qu'à sélectionné le kit STATIC précédemment ajouté pour votre projet d'application Qt, en mode Release (pas de mode debug en STATIC). Et voilà, vous avez finit ! 🙂

Sources : https://www.youtube.com/watch?v=Oyb20BAgx0U