56 votes

Pourquoi Qt utilise-t-il son propre outil de création, qmake ?

Je viens de commencer à utiliser Qt et j'ai remarqué qu'il utilise son propre outil de création, qmake .

  • Pourquoi Qt utilise-t-il son propre outil de création ?
  • Y a-t-il quelque chose de spécial qui l'empêche d'utiliser un outil de fabrication standard ?
  • Est-ce que qmake appelle le CCG Compilateur C++ ?

24 votes

Vous vous méprenez, qmake est plutôt un remplacement pour configure pas make

1 votes

Si vous êtes familier avec les Imakefiles, votre fichier .pro de qt est un remplacement pour cela. Au lieu de créer un Makefile à partir de votre Imakefile, qmake crée un Makefile à partir de votre fichier .pro. (Il peut aussi générer le fichier .pro pour vous, bien que vous aurez parfois besoin d'ajouter à ses valeurs par défaut).

58voto

Thomi Points 5434

Qt utilise qmake pour prendre en charge de manière transparente les différents modules complémentaires de Qt, notamment "moc, le compilateur de méta-objets" (qui fournit des signaux et des slots), "uic, le compilateur d'interface utilisateur" (qui crée des fichiers d'en-tête à partir de fichiers de conception .ui), "rcc, le compilateur de ressources" (qui compile les ressources).

Rien ne vous empêche d'utiliser le système de construction de votre choix. Cependant, cela représente beaucoup plus de travail. Par exemple, vous devez exécuter "moc" sur chaque fichier d'en-tête qui contient une classe ayant des signaux ou des slots. En général, ce n'est pas recommandé, surtout pour quelqu'un qui commence à utiliser Qt.

QMake n'appelle pas directement g++/gcc. Au lieu de cela, qmake crée des fichiers make natifs sur votre plateforme actuelle. Sous linux, il crée des fichiers standards GNU make, sous Windows il peut générer des fichiers visual studio make, sous Mac OS X il peut générer des fichiers de projet XCode. Vous invoquez alors votre système de construction natif (soit GNU make, soit MS NMake, soit xcodebuild ou autre), qui appellera votre compilateur natif (g++/gcc ou autre).

0 votes

RE "QMake n'appelle pas directement g++/gcc" : Donc QT n'utilise pas un compilateur C++ standard comme gcc ? Quel compilateur utilise-t-il ?

0 votes

QT est multiplateforme ; il peut être compilé avec de nombreux compilateurs différents.

8 votes

QMake N'APPELLE PAS gcc directement. Il crée des fichiers make spécifiques à la plateforme qui vous puis les invoquer. Ces fichiers make appellent à leur tour le compilateur que vous semblez utiliser.

9voto

Game Coder Points 41

A mon avis, qmake est cool pour les projets simples (vous pouvez juste qmake -projet ; qmake ; make), mais horrible et pas assez documenté pour les gros projets. En particulier, la fonctionnalité configure de qmake est une blague.

Les meilleurs systèmes de construction que je connais sont CMake et Waf (basé sur Python). Dans mes propres projets Qt, j'utilise CMake pour faire le travail. Tout comme les KDE-guys :)

6voto

Ron Warholic Points 7479

Pour prendre en charge son système de signaux et de fentes, Qt s'appuie sur un préprocesseur et un compilateur spéciaux qui génèrent des objets intermédiaires effectuant une grande partie du traitement. C'est ce que l'on appelle le Compilateur de méta-objets o MOC .

Voir Documentation Qt 5 : Utilisation du compilateur Meta-Object pour les détails.

Le MOC (ainsi que quelques autres outils intermédiaires) fonctionne en conjonction avec les éléments suivants qmake un outil d'automatisation de la construction qui produit des fichiers Makefile dans votre format natif (VC++, g++, etc.) pour construire les fichiers intermédiaires générés par le MOC ainsi que tous vos fichiers sources dans l'exécutable final.

5voto

Brian Gianforcaro Points 11985

qmake est conçu pour être multiplateforme et flexible. Il est compatible avec Microsoft Visual Studio et Xcode.

Vous pouvez trouver tout cela dans le Manuel qmake .

qmake génère un Makefile basé sur les informations contenues dans un fichier de projet. Les fichiers de projet sont créés par le développeur, et sont généralement simples, mais mais des fichiers de projet plus sophistiqués peuvent peuvent être créés pour des projets complexes. qmake contient des fonctionnalités supplémentaires pour soutenir le développement avec Qt, incluant automatiquement des règles de construction pour moc et uic. qmake peut également générer des projets pour Microsoft Visual studio sans que le développeur ait à de modifier le fichier du projet.

6 votes

\=> Ce n'est donc pas exactement un outil de fabrication, mais un outil de pré-fabrication ;)

3voto

Dirk Eddelbuettel Points 134700

Dans l'ordre

a) parce qu'il fait beaucoup de choses en coulisse pour vous

b) oui, voir a)

c) oui, il appelle g++ (mais peut supporter d'autres compilateurs si vous en avez)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X