Comment compiler sur plusieurs cœurs en utilisant mingw à l'intérieur de QTCreator
J'ai un quad-core i7 sur mon bureau windows. Je suis en train d'essayer d'obtenir mingw32-make pour compiler en utilisant autant de base que possible. J'ai ajouté -j8 dans le "Faire" Arguments de champs en vertu de Construire des Paramètres->créer des Étapes. mingw32-make semble complètement ignorer l'option puisque je ne suis pas toute amélioration de la vitesse de sortir de cette. Quand j'ai vue l'utilisation du PROCESSEUR dans le gestionnaire des tâches, il reste à 13% et je ne vois qu'une seule instance de g++ en cours d'exécution.
Droit maintenant, la reconstruction de l'ensemble du projet en utilisant mingw prend 3 minutes. Reconstruction à l'aide d'MSVC ne prend que 15 secondes.
Pour votre information, j'ai activé l'en-tête précompilé option dans les paramètres du projet. Qui rend les choses beaucoup plus rapidement avec la VC ainsi. Mais je suis encore à voir les avantages d'un en-tête précompilé avec mingw.
Veuillez nous faire part de vos commentaires si vous avez jamais eu mingw pour compiler plusieurs fichiers sources en parallèle à partir de QTCreator. Merci!
Vous devez vous connecter pour publier un commentaire.
Voici ce que j'ai fait.
Dans le menu Outils -> Options de menu dans Qt Creator, en vertu de la "Build and Run" de la section il y a une option qui dit "Utilisation jom au lieu de nmake". J'ai vérifié cette boîte, mais rien n'a changé. Donc, au lieu de cela, je suis allé sur le projet de construction de paramètres et selon les étapes de génération catégorie, il y a un "Faire" de l'élément. Développer les détails sur ce bien et vous trouverez un "Override mingw32-make.exe:" le point. J'ai collé "C:\QtSDK\QtCreator\bin\jom.exe" là-bas, et soudain, j'ai été la construction à noyaux multiples.
A fonctionné pour moi sur Qt Creator 2.4.1. Lui donner un essai.
-j8
n'est probablement pas de travail en raison d'une limitation de GNU Make sur Win32.Essayer de mettre juste
-j
en faire des arguments de terrain. Qui nous dit de Faire pour reproduire le plus grand nombre de compiler des processus comme elle le peut, si vous avez suffisamment de RAM et de CPU pour gérer cela, il devrait être plus rapide qu'une simple compilation.Malheureusement ce sont les deux seules options (sans modifier le Makefile): soit
-j1
, ou illimité-j
Plus de détails: GNU Make sur Win32 ne prend pas en charge le serveur de travail, de sorte qu'un parent Rendre le processus ne peut pas suivre le nombre de compiler les processus engendré par un sous-Faites de. Pour être sûr, la sous-Rendre la course avec
-j1
. Je crois que qmake/Qt Creator Makefiles générés par l'utilisation de plusieurs couches de Makefiles. J'ai d'abord pensé à cette question avec Microchip MPLAB X IDE, découvrez ce fil pour plus d'infoCette citation est tirée de README.W32 distribué avec GNU Make
Ajouter
-j9
(remplacer9
à la valeur deNUMBER_OF_PROCESSORS
(Windows)/$(nproc)
(Linux), plus celle — ci est optimale) à tous leslignes dans qmake\generators\makefile.cpp (trouver vous-même).
Il en résulte que
puis exécutez
configure.exe
avec les bons paramètres (!et supplémentaires-qmake -dont-process
afin d'éviter la génération de l'abondance des makefiles!).Le problème est que vous obtenez de deux ensembles de processus au cours de "debug et release" de construire. Ainsi, nombre total de processus engendré est de 18 ans et+.
Utilisation
MAKE_COMMAND
variable d'environnement:Dans Qt Creator aller à Projets -> Build & Exécuter -> votre MinGW construire de configuration -> compiler (c'est sur l'écran ci-dessous Généraux /les étapes de génération /Nettoyer les étapes..) et ensuite d'ajouter une variable
MAKEFLAGS
et mis à-j8
. J'ai testé sur mes deux core avec-j4
et QtCreator 4.4.1 et avec MinGW 5.3.0. Lors de la compilation de mon processeur tourne à 100% de la performance comme on peut le voir dans le Gestionnaire des Tâches. Sans cette option, il était d'environ 25 %, donc je suppose qu'il fonctionne exactement comme prévu. La construction est maintenant beaucoup plus rapide.-j est le chemin à parcourir, malheureusement pour moi, le projet est si grand qu'il utilise tout mon mémoire et mon ordinateur se bloque, donc être conscient de cela. Brendan a dit il n'y a aucun moyen d'utiliser seulement la moitié de vos cœurs par exemple ce qui est dommage si c'est vrai.
Le problème est que le faire n'a pas jobserver de soutien. Ainsi, le mingw32 port n'existait pas non plus. Il a depuis été ajouté cependant. Je crois que l'ancienne version avec les "corriger" le jobserver soutien est 3.82.90. Vous pouvez la trouver sur le lien ci-dessous.
http://sourceforge.net/projects/mingw/files/MinGW/Extension/make/make-3.82.90-cvs-20120823/