web-dev-qa-db-fra.com

Construire Qt 5 sur Linux, pour Windows

Je voulais migrer mon application Qt 4 pour utiliser Qt 5 à la place. Ces instructions a échoué, en raison de certaines différences avec la façon dont MXE construit Qt 5, y compris le fait qu'il utilise des tarballs Qt modulaires à la place d'un grand tarball.

53
Tshepang

Voici les instructions complètes:

  • Trouver:

    git clone https://github.com/mxe/mxe.git
    
  • Installer construire des dépendances

  • Construisez Qt 5 pour Windows:

    cd mxe && make qtbase
    

    Cela créera d'abord ses dépendances et les outils de génération croisée; Cela devrait prendre moins d'une heure sur une machine rapide avec un accès Internet décent.

    En raison de la nouvelle nature modulaire de Qt 5, divers composants majeurs de Qt sont désormais dans différentes tarballs. Celui sélectionné ci-dessus, qtbase, devrait vous donner suffisamment de fonctionnalités pour exécuter des applications GUI ordinaires, ce qui est tout ce dont j'avais besoin pour ma propre (petite) application.

    Si vous souhaitez construire l'intégralité de Qt 5 à la place, vous devrez exécuter make qt5 (au lieu de make qtbase). Notez que cela prendra beaucoup plus de temps, alors assurez-vous que vous avez besoin des fonctionnalités supplémentaires.

  • Accédez au répertoire de votre application et exécutez l'outil générateur Qt Makefile:

    <mxe root>/usr/bin/i686-w64-mingw32.static-qmake-qt5
    
  • Construisez votre projet:

    make
    
  • Vous devriez trouver le binaire dans le répertoire ./release:

    wine release/foo.exe
    

Quelques notes:

  • Cela a été testé sur ma Debian 8 64 bits, et sur Windows bien sûr.

  • La sortie est un exécutable statique 32 bits, qui fonctionnera bien sur Windows 64 bits.

  • Si vous voulez un exécutable 64 bits, construisez Qt avec:

    make MXE_TARGETS=x86_64-w64-mingw32.static qtbase
    

    Le défaut MXE_TARGETS La valeur est i686-w64-mingw32.static.

93
Tshepang

La commande git checkout n'est pas correcte. Vous devez maintenant obtenir leur branche stable sinon la construction échouera.

git clone https://github.com/mxe/mxe.git

devrait être...

git clone -b stable https://github.com/mxe/mxe.git

Cela seul a résolu tous mes problèmes avec la construction de qtbase mais sans laisser de dossier qt une fois terminé. La cible qt5 échouerait alors avec des erreurs obscures. Dossier supprimé, extrait stable et cela a fonctionné parfaitement.

7
AcidTonic

Si vous essayez de faire ça, pour moi ça marche bien!

su
mv mxe /opt/mxe
cd /opt/mxe && make
0
Ulises HybridReactor