Frage

Ich habe gerade angefangen mit Qt und bemerkte, dass sie ihr eigenes Make-Tool verwendet , qmake .

  • Warum Qt verwendet ihr eigenes Make-Tool?
  • Gibt es etwas Besonderes, dass verhindert, dass es mit einem Standard-Make-Tool?
  • Does nennen QMake die GCC C ++ Compiler?
War es hilfreich?

Lösung

Qt Anwendungen qmake transparent Qt verschiedenen Addons, darunter "moc, dem Metaobjekt-Compiler" (die Signale & Slots zur Verfügung stellt), "uic, der ui-Compiler" (die Header-Dateien von .ui Designer-Dateien erstellt) zu unterstützen, "RCC, der Ressource-Compiler" (welche Ressourcen kompiliert).

Es gibt nichts, Sie zu stoppen jedes Build-System verwenden Sie wollen. aber es ist viel mehr Arbeit. Zum Beispiel müssen Sie „moc“ über jede Header-Datei auszuführen, die eine Klasse enthält, die Signale oder Schlitze aufweist. Im Allgemeinen ist es nicht zu empfehlen, vor allem für jemanden, der gerade Qt zu verwenden fangen.

QMake stellt nicht g ++ / gcc direkt. Stattdessen erstellt Qmake nativen Make-Dateien auf Ihrem aktuellen Plattform. Unter Linux schafft es Standard GNU Make-Dateien unter Windows kann es Visual Studio Make-Dateien erzeugen, unter Mac OS X kann es XCode Projektdateien erzeugen. Sie rufen Sie dann Ihre Mutter Build-System (entweder GNU make oder MS NMake oder xcodebuild oder was auch immer), die Ihre Mutter Compiler aufruft (g ++ / gcc oder was auch immer).

Andere Tipps

In meinem opinnion qmake ist cool für einfache Projekte (man kann nur Qmake -project; Qmake; make), aber schrecklich und nicht dokumentiert genug für ziemlich große Projekte. Vor allem der configure Funktionalität von qmake ist ein Witz.

Die besten Build-Systeme ich kenne, sind CMake und Waf (Python basierte). In meinem eigenen Qt-Projekte verwende ich CMake den Job zu erledigen. Genau wie KDE-Jungs:)

Um ihr Signal / Slot-System zu unterstützen setzt Qt auf einem speziellen Präprozessor und Compiler, der Zwischen Objekten erzeugt, die viel von der Verarbeitung zu tun. Sie beziehen sich auf das als Meta-Object-Compiler oder MOC .

Siehe Qt 5 Dokumentation: Verwenden des Meta-Object-Compiler für Details .

Das MOC (zusammen mit ein paar anderen Zwischen Tools) arbeitet in Verbindung mit qmake; ein Build-Automatisierung Werkzeug, das Makefiles im nativen Format (VC ++, g ++, etc.), dass build die Zwischendateien, die durch die MOC sowie alle Ihre Quelldateien in die endgültige ausführbare Datei.

produziert

Qmake ist so konzipiert, Cross-Plattform und flexibel sein. Es kann kompatibel mit Microsoft Visual Studio und Xcode.

Sie können alles in der Qmake Handbuch .

  

qmake generiert ein Makefile basierend auf   die Informationen in einer Projektdatei.   Projektdateien werden durch die erstellt   Entwickler, und sind in der Regel einfach, aber   anspruchsvollere Projektdateien können   werden für komplexe Projekte erstellt. qmake   enthält zusätzliche Funktionen   Unterstützung Entwicklung mit Qt,   automatisch einschließlich Build-Regeln   für moc und uic. qmake kann auch   generieren Projekte für Microsoft Visual   Studio, ohne dass die Entwickler zu benötigen   die Projektdatei zu ändern.

Um

a) weil es tut viel hinter den Kulissen für Sie

b) ja, siehe: a)

c) ja, es tut Anruf g ++ (kann aber andere Compiler unterstützen, wenn Sie sie haben)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top