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++?
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).
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:)
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.
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.
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)