web-dev-qa-db-fra.com

Comment créer une application MinGW Qt 64 bits sur Windows (avec Qt Creator)

Je recherche (et je ne suis pas le seul) la façon la plus simple de créer des programmes Qt 64 bits basés sur MinGW sous Windows. Simplicité signifie un minimum d'effort et de temps (par exemple pour la construction et l'installation). Actuellement, je gère l'environnement de développement officiel normal du site Web qt-project.org pour Windows 32 bits avec MinGW/OpenGL et QtCreator. Bien sûr, j'ai lu la page wiki 64 bits (inachevée ...) de qt-project.org et j'ai également lu différentes questions de stackoverflow, mais je suis toujours confus. Je sais que le sujet de la façon de construire Qt 64 bits est traité dans d'autres articles, mais ce n'est pas ma question, ce dont j'ai besoin est un aperçu et le port MinGW 64 bits le plus favorable.

Une chose qui m'a dérouté, par exemple, est que les DLL du package "x64-Qt-5.2.1 + QTCreator-3.0.1- (gcc-4.8.2-seh) .7z" du projet mingwbuilds sourceforge semblent être 32 bits .

Pour clarifier un peu ma question, permettez-moi également de poser quelques questions connexes:

  • Dois-je d'abord créer un environnement de développement 64 bits pour produire des exécutables 64 bits ou puis-je conserver mon environnement par défaut normal et échanger uniquement la chaîne d'outils MinGW avec une chaîne d'outils 64 bits?
  • Où puis-je obtenir des bibliothèques Qt 64 bits pour le déploiement, ou dois-je quand même les créer moi-même? Ou où puis-je obtenir un environnement de développement 64 bits, y compris les bibliothèques 64 bits?
  • Si je dois me construire, quel port MinGW 64 bits est le plus avantageux?

Merci beaucoup pour votre aide.

20
Chris

Mise à jour du 3/11/2019: À partir de Qt 5.12, le projet Qt prend officiellement en charge MinGW-w64 en mode 64 bits. Vous pouvez l'installer à partir du programme d'installation de Qt ou le créer vous-même à partir des sources de Qt (ils ont résolu les problèmes qui empêchaient les générations réussies).

Mise à jour précédente: Je pense que la réponse de rubenvb est maintenant la meilleure réponse à cette question: MSYS2 contient une mise à jour Qt construit avec MinGW-w64, ce dont vous aurez besoin pour créer des applications Qt 64 bits. Je recommande d'utiliser le lien wiki Qt dans la réponse de rubenvb pour le déploiement; c'est grandement amélioré.

Qt64-NG

Je recommande d'installer votre build Qt à partir du projet Qt64-NG .

Le projet fournit une version Q64 x64 mise à jour avec MinGW-w64. Le compilateur GCC du projet MinGW-w64 est également inclus dans les versions d'installation (mais pas dans le 7z). Vous voudrez la même version de GCC dans MinGW-w64 qui a été utilisée pour construire Qt pour construire vos propres applications, donc je vous recommande de choisir l'installateur.

Vous devrez choisir une construction avec la méthode de déroulement de cadre de pile d'exception que vous souhaitez. La question Quelle est la différence entre sjlj vs nain vs seh? décrit les différences entre les types de gestionnaires d'exceptions qui sont présents dans différentes versions de Qt. SJLJ était le seul choix avant la sortie de GCC 4.8, mais les versions ultérieures de GCC prennent en charge SEH. Les deux choix fonctionneront, bien que SEH soit plus efficace.

Post-installation

Après avoir installé Qt, vous pouvez ajouter les répertoires Qt/qt-ver/qt-ver/bin et Qt/qt-ver/mingw64/bin à votre variable User ou System Path dans vos variables d'environnement, ce qui vous permettra d'utiliser MinGW GCC -w64 pour la construction à partir de votre processus de construction préféré. Après cela, Qt Creator détectera automatiquement MinGW-w64 en tant que compilateur installé.

Si vous préférez ne pas ajouter à votre chemin, vous pouvez spécifier manuellement le compilateur pour la version que vous venez de configurer avec Qt Creator. Vous devrez probablement ajouter la version Qt en sélectionnant qmake.exe sous Options> Build & Run. Vous voudrez également sélectionner gdb.exe comme débogueur sous l'onglet Build & Run> Debuggers. Il sera situé dans Qt/qt-ver/qt-ver/mingw64/bin.

Vous pouvez échanger la chaîne d'outils MinGW-w64 avec d'autres chaînes d'outils. Pour ce faire, dans Qt Creator, vous pouvez créer et échanger entre les kits.

Déploiement

Vous pouvez utiliser la version Qt64-NG pour le développement et le déploiement. Pour déployer, vous souhaiterez empaqueter les fichiers que votre application devra exécuter avec votre application, de sorte que votre utilisateur final n'aura pas à effectuer d'étapes d'installation supplémentaires.

Tout d'abord, créez un dossier de déploiement (probablement avec le nom de votre application) et copiez-y le fichier exe de votre application. Si vous utilisez Qt Creator, vous pouvez trouver le chemin d'accès à votre exe d'application soit dans l'onglet Projets sur la barre latérale ou dans le fichier .pro de l'application s'il y est spécifié.

Il existe deux façons de copier les dépendances de DLL dont vous aurez besoin pour exécuter votre application. Vous pouvez soit copier les fichiers nécessaires manuellement, soit utiliser windeployqt, un programme fourni avec votre installation Qt qui copiera automatiquement (la plupart) des dépendances nécessaires pour le déploiement dans le dossier de déploiement d'application que vous venez de créer.

Copiez les fichiers manuellement

Copiez les fichiers dll suivants de vos dossiers Qt/qt-ver/qt-ver/bin et Qt/qt-ver/mingw64/bin dans votre dossier de déploiement d'application. Certains fichiers dll seront situés dans les deux dossiers, et l'un ou l'autre emplacement est acceptable pour une utilisation:

icudt54.dll
icuin54.dll
icuuc54.dll
libgcc_s_sjlj.dll or libgcc_s_seh.dll (corresponds with chosen stack unwinding method)
libssp-0.dll
libstdc++-6.dll
libwinpthread-1.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll

Vous devrez également inclure tous les fichiers Qt5 * .dll qui correspondent aux modules Qt que vous utilisez dans votre projet.

Ensuite, vous devrez copier tous les fichiers DLL de plug-in requis par Qt. Qt recherchera les plugins par défaut dans le dossier/plugins de déploiement d'application. Vous pouvez trouver les dossiers de plugins que vous souhaitez copier dans Qt/qt-ver/qt-ver/plugins. L'exception à cela est le dossier des plates-formes, qu'il essaiera de trouver dans votre répertoire de déploiement d'applications/plates-formes. La structure de répertoires suivante indique où copier les fichiers pour un projet minimal. Copiez tous les autres plugins nécessaires, y compris le dossier contenant, dans votre dossier de déploiement/plugins.

/déployer

/platforms
/plugins
icudt54.dll
icuin54.dll
icuuc54.dll
app.exe
libgcc_s_seh-1.dll
libssp-0.dll
libstdc++-6.dll
libwinpthread-1.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll

/deploy/plateformes

qwindows.dll

/deploy/plugins/imageformats

qjpeg.dll

Windeployqt

Vous pouvez trouver windeployqt.exe dans votre dossier Qt/qt-ver/qt-ver/bin. Windeployqt nécessite que vos dossiers Qt/qt-ver/qt-ver/bin et mingw64/bin soient dans votre variable User ou System Path pour fonctionner correctement.

Pour utiliser windeployqt, ouvrez une fenêtre de commande et accédez au répertoire de déploiement de votre application. La syntaxe pour l'exécuter se trouve dans Qt Deployment . Vous voudrez probablement l'exécuter comme suit:

windeployqt.exe app.exe

Windeployqt (Qt 5.4.1) copiera vos dossiers de plugins imageformats et iconengines vers votre répertoire de déploiement d'application au lieu de l'intérieur d'un dossier de plugins. Il s'agit de l'emplacement correct, car il modifie où Qt recherche ces dossiers.

Dépannage

Vous pouvez tester pour voir si vous avez les bons fichiers en exécutant votre application sur un ordinateur sur lequel la bibliothèque de développement Qt n'est pas installée et dans le chemin d'accès. Si vous n'obtenez aucune erreur au démarrage de votre application, vous saurez que Qt a trouvé les dépendances dont il avait besoin et vous pouvez empaqueter votre application pour la distribution.

Si vous obtenez des erreurs, reportez-vous au Guide de déploiement Tripleboot . Vous pouvez également essayer d'utiliser Process Explorer pour voir les dépendances que votre application tente de charger lorsqu'elle donne une erreur de dépendance manquante.

Emballage

Les applications sont fréquemment distribuées avec une archive et/ou un installateur. Qt Installer Framework fournit un moyen pratique de conditionner votre application Qt pour la distribution en tant qu'exécutable d'installation.

21
Andrew Dolby

Vous pouvez installer MSYS2, qui comprend un gestionnaire de packages et des versions prédéfinies de chargement de packages, y compris Qt, que vous pouvez également utiliser en dehors de l'environnement MSYS2 avec par exemple Qt Creator (qui est d'ailleurs dans les dépôts d'ailleurs).

L'installation est simple:

  1. Téléchargez le programme d'installation à partir de la page Web .
  2. Ouvrez l'invite de commande MSYS2 et installez Qt:

    pacman -Sy mingw-w64- {i686, x86_64} -qt5

  3. Qmake de Qt est installé dans <msys2>/mingw{64,32}/bin et accessible à partir des invites de commande respectives.

De la même manière, vous pouvez installer des centaines d'autres bibliothèques et outils dont vous pourriez avoir besoin pour votre développement.

Quant au reste du déploiement d'applications, je vous renvoie à la page wiki du projet Qt sur le déploiement Windows .

15
rubenvb