Cross compilation avec Qt5 et MXE

Bonjour,

Récemment, j’ai eu besoin de compiler une application Qt5 à la fois pour Windows et pour Linux. N’ayant aucun système Windows à disposition avec tous les outils nécessaires au développement, j’ai préféré m’orienter vers la Cross Compilation.

Le principe de la Cross Compilation est de créer un exécutable pour une plateforme différente de celle où le code est compilé.

Aujourd’hui, je vais donc vous expliquer comment installer un système permettant de compiler une application Qt5 pour Windows à partir d’un serveur Linux.

Étant peu expérimenté dans le domaine de la Cross Compilation, et ayant besoin de compiler Qt5, j’ai décidé de me tourner vers le projet MXE.

J’ai suivi à peu de chose près le tutoriel sur leur site: http://mxe.cc/#tutorial.
J’ai décidé d’utiliser la branche master au lieu de stable, car cette dernière est adapté à Qt 5.1.0, alors que master supporte Qt 5.1.1.

Premièrement, il vous faudra installer quelques packages pour récupérer et compiler MXE.

Je vous invite à consulter la page présente sur leur site : http://mxe.cc/#requirements.

Une fois les packages nécessaires installés, on va récupérer et compiler MXE.

1
2
3
4
git clone https://github.com/mxe/mxe.git /opt/mxe
cd /opt/mxe
make gcc
make qt5

Vous devriez avoir l’ensemble des outils nécessaires à la compilation de votre application disponibles.
On va ajouter au PATH le chemin des binaires nécessaires à la compilation de votre application.

Ajoutez donc la ligne suivante à votre $HOME/.bashrc.

$HOME/.bashrc
1
export PATH=/opt/mxe/usr/bin:$PATH

Si vous compilez votre application depuis un script, vous pouvez ajouter la variable PATH directement dans le script.

Admettons que votre projet se trouve dans le dossier $HOME/projet/ et le .pro dans $HOME/projet/src/projet.pro, il vous faudra exécuter les opératons suivantes pour compiler votre application pour Windows.

1
2
3
4
mkdir -p $HOME/projet/build
cd $HOME/projet/build
/opt/mxe/usr/i686-pc-mingw32/qt5/bin/qmake $HOME/projet/src/projet.pro
make

Vous devriez obtenir un exécutable prêt pour Windows.