Pourquoi Qt utilise-t-il son propre outil make, qmake?

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

  • Pourquoi Qt utilise-t-il son propre outil make?
  • y a-t-il quelque chose de spécial qui l'empêche d'utiliser un outil make standard?
  • qmake appelle-t-il le compilateurGCC c++?
54
demandé sur Trojan 2009-09-02 19:52:22

5 réponses

Qt utilise qmake pour prendre en charge de manière transparente les différents addons de Qt, y compris " moc, le compilateur meta-object "(qui fournit des signaux et des slots)," uic, le compilateur ui " (qui crée des fichiers d'en-tête à partir de .ui designer files), " rcc, le compilateur de ressources "( qui compile les ressources).

Il n'y a rien pour vous empêcher d'utiliser n'importe quel système de construction que vous voulez. cependant, il est beaucoup plus de travail. Par exemple, vous devez exécuter "moc" sur chaque fichier d'en-tête qui contient une classe qui a des signaux ou des fentes. En général ce n'est pas recommandé, surtout pour quelqu'un qui commence tout juste à utiliser Qt.

QMake n'appelle pas directement g++/gcc. Au lieu de cela, qmake crée des fichiers make natifs sur votre plate-forme actuelle. Sous linux, il crée des fichiers GNU make standard, 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 ensuite votre système de construction natif (GNU make, ou MS NMake, ou xcodebuild ou autre), qui appellera votre compilateur natif (g++ / gcc ou quoi).

55
répondu Thomi 2009-09-03 07:23:04

Dans mon opinnion qmake est cool pour les projets simples (vous pouvez simplement qmake-project; qmake; make), mais horrible et pas assez documenté pour les projets de grande envergure. Surtout la fonctionnalité de configuration de qmake est une blague.

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

8
répondu Game Coder 2010-02-12 15:10:32

Qmake est conçu pour être multi-plateforme et flexible. Il peut compatible avec Microsoft Visual Studio et Xcode.

Vous pouvez tout trouver dans le manuel qmake .

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

5
répondu Brian Gianforcaro 2009-09-02 15:58:22

Pour prendre en charge son système de signal/slot, Qt s'appuie sur un préprocesseur et un compilateur spéciaux qui génère des objets intermédiaires qui effectuent une grande partie du traitement. Ils se réfèrent à cela comme le compilateur meta-object ou MOC.

Voir http://doc.trolltech.com/4.5/moc.html pour plus de détails.

Le MOC (avec quelques autres outils intermédiaires) fonctionne en conjonction avec qmake; qui produit des makefiles dans votre format natif (VC++, g++, etc.) qui construisent les fichiers intermédiaires généré par le MOC, ainsi que tous vos fichiers source dans l'exécutable final.

5
répondu Ron Warholic 2010-01-26 01:17:40

Dans l'ordre

A) parce qu'il fait beaucoup dans les coulisses pour vous

B) oui, voir a)

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

3
répondu Dirk Eddelbuettel 2009-09-02 15:55:06