web-dev-qa-db-fra.com

Comment compiler Qt 5 sous Windows ou Linux, 32 ou 64 bits, statique ou dynamique sur VS2010, VS2012, VS2013 ou VS2015 Express ou g ++

Juste un article pour aider ces gars qui essaient de faire ça, car je n'ai pas de blog.

Cela fonctionne également pour Linux. N'hésitez pas à le modifier et à l'améliorer.

50
The Quantum Physicist

Remarque: Il y a aussi un autre article que j'ai écrit à compiler à partir de la source GIT ici avec un script automatisé sous Windows. Vous pouvez le modifier pour Linux comme la différence est indiquée dans ce post.

Cet article est continuellement mis à jour. Si cela vous aide, veuillez lui donner un "coup de pouce" afin que je sache que cela aide les gens et n'est pas inutile.

Si vous avez des commentaires ou si vous avez trouvé des fautes de frappe, faites-le moi savoir afin que je puisse les corriger.

Tout d'abord, peu importe que vous souhaitiez compiler une version 32 ou 64 bits. La seule différence est le raccourci d'invite de commande que vous devez choisir dans Visual Studio, qui initialisera différentes variables d'environnement.


Commençons par ceci:

  1. Téléchargez et installez Perl: Lien de téléchargement

  2. Téléchargez et installez Python: Lien de téléchargement

  3. Téléchargez et installez Windows SDK (probablement pas nécessaire, mais recommandé) J'utilise Windows 8, c'est donc la version J'ai utilisé: Lien de téléchargement , Sinon, trouvez la version appropriée pour votre Windows.

  4. Téléchargez et installez DirectX SDK (probablement nécessaire si vous voulez compiler avec OpenGL ) Lien de téléchargement

  5. Téléchargez et extrayez jom dans un dossier (non nécessaire pour linux) ( jom = est un outil pour compiler des choses avec VS en parallèle, il existe un moyen de le faire avec nmake, mais je ne le connais pas) Lien de téléchargement

  6. Téléchargez Qt Opensource, et extrayez-le, dites à C:\Qt\Qt5.6, maintenant le dossier qtbase se trouve dans C:\Qt\Qt5.6\qtbase.

  7. Uniquement pour Windows: VOULEZ-VOUS VRAIMENT TOTALEMENT STATIQUE?

    Habituellement, même si vous choisissez que la compilation soit statique, le compilateur lui-même ne fusionnera toujours pas ses bibliothèques statiquement. Si vous voulez que votre source compilée soit entièrement statique par rapport au compilateur (Visual Studio), vous devez faire ce Tweak dans les fichiers QMAKE de Qt.

    Accédez au fichier (à partir de votre répertoire source Qt), pour les versions supérieures à 2012, utilisez simplement la bonne version partout (comme win32-msvc2015) :

    • une. Pour VS2012: qtbase\mkspecs\win32-msvc2012\qmake.conf

    • b. Pour VS2010: qtbase\mkspecs\win32-msvc2010\qmake.conf

    • c. Pour Qt 5.5.0 et versions ultérieures (avec n'importe quelle version VS): qtbase\mkspecs\common\msvc-desktop.conf

    et éditez les lignes suivantes

     QMAKE_CFLAGS_RELEASE    = -O2 -MD
     QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi
     QMAKE_CFLAGS_DEBUG      = -Zi -MDd
    

    à

     QMAKE_CFLAGS_RELEASE    = -O2 -MT
     QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
     QMAKE_CFLAGS_DEBUG      = -Zi -MTd
    

Remarque: Qt 5.6+ a un paramètre de configuration -static-runtime qui fera cela pour vous. Vous n'aurez peut-être plus besoin de le faire manuellement pour les nouvelles versions de Qt.

  1. Démarrez le terminal sous linux ou sous Windows, démarrez les terminaux de Visual Studio (qui ont les variables d'environnement correctes définies, ou utilisez vcvarsall.bat ). Pour démarrer l'invite de commandes et le laisser faire automatiquement pour vous, accédez à Démarrer, Tous les programmes:

    Pour les versions Windows antérieures à 8: Recherchez le dossier Microsoft Visual Studio 201x et lancez l'invite de commande (x86 pour 32 bits ou x64 pour 64 bits).

    Pour Windows 8: allez à Démarrer, tapez "cmd" et toutes les versions disponibles pour l'invite de commande s'afficheront. Choisissez la version de Visual Studio appropriée (x86 pour 32 bits ou x64 pour 64 bits).

Voici une capture d'écran de son apparence. Tenez toujours à sélectionner "Native" s'il existe.

enter image description here

9.

  • Pour VS2012: Exécutez les commandes suivantes pour VS2012

     set QMAKESPEC=win32-msvc2012
     set QTDIR=C:\Qt\Qt5.7\qtbase
     set PATH=C:\Qt\Qt5.7\qtbase\bin;%PATH%
    

Remarque: La définition de la variable d'environnement QMAKESPEC est considérée comme incorrecte pour les versions Qt 5.8+. Ne le faites pas pour les nouvelles versions.

Pour la liaison dynamique (nécessite 8 Go)

configure -debug-and-release -opensource -platform win32-msvc2012 -opengl desktop

Pour une liaison dynamique sans exemple (nécessite 2 Go)

configure -debug-and-release -opensource -platform win32-msvc2012 -opengl desktop -nomake examples -nomake tests

 Now the last command depends on what you want to compile. Just type configure -help and see what the available command-line parameters are.

Pour la liaison statique (nécessite 70 Go, oui c'est fou, il est plus raisonnable de ne pas faire d'exemples et de démos).

configure -debug-and-release -opensource -platform win32-msvc2012 -opengl desktop -static

Pour une liaison statique sans exemple (nécessite 4 Go, est plus logique).

configure -debug-and-release -opensource -platform win32-msvc2012 -opengl desktop -static -nomake examples -nomake tests

Maintenant, cela prendra une minute ou deux, puis utilisez jom comme suit (en supposant qu'il soit extrait dans C:\Qt\jom):

C:\Qt\jom\jom.exe -j 50

50 représente le nombre de cœurs que vous souhaitez utiliser. J'utilise 50 parce que j'ai 8 threads et utiliser seulement 8 n'occupera pas tous les cœurs complètement, donc plus c'est mieux, mais ne soyez pas trop gourmand car cela pourrait rendre votre système non réactif.

  • Pour VS2010: Exécutez les commandes suivantes pour VS2010

    set QMAKESPEC=win32-msvc2010
    set QTDIR=C:\Qt\Qt5.7\qtbase
    set PATH=C:\Qt\Qt5.7\qtbase\bin;%PATH%
    

Remarque: La définition de la variable d'environnement QMAKESPEC est considérée comme incorrecte pour les versions Qt 5.8+. Ne le faites pas pour les nouvelles versions. Pour la liaison dynamique (nécessite 8 Go)

configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop

Pour une liaison dynamique sans exemple (nécessite 2 Go)

configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop -nomake examples -nomake tests

La dernière commande dépend de ce que vous souhaitez compiler. Tapez simplement configure -help et voyez quels sont les paramètres de ligne de commande disponibles. Pour la liaison statique (nécessite 70 Go, oui c'est fou, il est plus raisonnable de ne pas faire d'exemples et de démos).

configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop -static

Pour une liaison statique sans exemple (nécessite 4 Go, est plus logique).

configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop -static -nomake examples -nomake tests

Maintenant, cela prendra une minute ou deux, puis utilisez jom comme suit (en supposant qu'il soit extrait dans C:\Qt\jom):

C:\Qt\jom\jom.exe -j 50

50 représente le nombre de cœurs que vous souhaitez utiliser. J'utilise 50 parce que j'ai 8 threads et utiliser seulement 8 n'occupera pas tous les cœurs complètement, donc plus c'est mieux, mais ne soyez pas trop gourmand car cela pourrait rendre votre système non réactif.

  • Pour linux:

Il y a une petite différence pour Linux sur Windows. Il est recommandé sous Linux de installer après la compilation. Honnêtement, c'est la seule façon dont cela fonctionne pour moi sans problème.

Exécutez les commandes suivantes pour Linux. N'oubliez pas de remplacer les chemins par les bons chemins de votre source Qt

    export QMAKESPEC=linux-g++
    export QTDIR=/home/username/Qt5.7/qtbase
    export PATH=/home/username/Qt5.7/qtbase/bin:$PATH

Remarque: La définition de la variable d'environnement QMAKESPEC est considérée comme incorrecte pour les versions Qt 5.8+. Ne le faites pas pour les nouvelles versions.

Supposons que vous souhaitiez installer la source compilée dans le répertoire /home/username/Qt5.7-install. Dans ce cas, ajoutez ce qui suit à any des commandes de configuration ci-dessous:

-prefix /home/username/Qt5.7-install

Avertissement : NE PAS installer dans le même répertoire source. C'est tout simplement faux!

Si -prefix n'est pas défini, le chemin par défaut sera choisi, qui est /usr/local/ J'imagine. Je n'aime rien installer en utilisant root. Je préfère toujours installer dans mon dossier utilisateur, afin que la réversibilité et les mises à niveau ne soient pas un problème.

Les différentes commandes configure possibles sont différentes selon ce que vous voulez faire.

Pour la liaison dynamique (nécessite 8 Go)

./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop

Pour une liaison dynamique sans exemple (nécessite 2 Go)

./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop -nomake examples -nomake tests

Maintenant, la dernière commande dépend de ce que vous voulez compiler. Tapez simplement ./configure -help et voyez quels sont les paramètres de ligne de commande disponibles.

Pour la liaison statique (nécessite 70 Go, oui c'est fou, il est plus raisonnable de ne pas faire d'exemples et de tests).

./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop -static

Pour une liaison statique sans exemple (nécessite 4 Go, est plus logique).

./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop -static -nomake examples -nomake tests

Une fois la création terminée, exécutez la commande make

make -j 50

50 représente le nombre de cœurs que vous souhaitez utiliser. J'utilise 50 parce que j'ai 8 threads et utiliser seulement 8 n'occupera pas tous les cœurs complètement, donc plus c'est mieux, mais ne soyez pas trop gourmand car cela pourrait rendre votre système non réactif.

  1. Attendez 2+ heures jusqu'à ce que la compilation soit terminée.

  2. Nettoyer! Vous pouvez économiser beaucoup d'espace en utilisant cette commande pour Windows: C:\Qt\jom\jom.exe clean Et cette commande pour linux: make clean

Vous pouvez réduire la taille de votre dossier compilé de 8 Go à 2,5 Go (pour la liaison dynamique) et de 70 Go à 35 Go (pour la liaison statique).


Pour utiliser cette version compilée dans Qt Creator:

  1. Démarrez Qt Creator
  2. Allez dans Outils, Options
  3. Sélectionnez Build and Run dans la liste de gauche.
  4. Allez dans l'onglet "Qt Versions"
  5. Cliquez sur "Ajouter" et sélectionnez qmake dans le dossier où se trouve votre bac dans qtbase, donc d'en haut:

    C:\Qt\Qt5.7\qtbase\bin\qmake.exe

(ou pour Linux, choisissez le chemin où vous avez installé la source Qt compilée, qui est équivalent à /home/username/Qt5.7-install/qtbase/bin/qmake dans ce didacticiel)

  1. Cliquez sur "Appliquer"
  2. Allez dans l'onglet "Kits"
  3. Cliquez sur "Ajouter"
  4. Donnez-lui un nom, choisissez le compilateur approprié (POUR VISUAL STUDIO EXPRESS NE PAS SÉLECTIONNER AMD64 POUR 64-BIT, IL NE FONCTIONNERA PAS, CHOISIR x86_AMD64 AU LIEU)
  5. Cliquez sur OK.

Maintenant, ouvrez simplement un projet et vous le trouverez en vous demandant de choisir le kit que vous avez ajouté.

Prendre plaisir :)

89
The Quantum Physicist