Warum Qt ihre eigene Make-Tool qmake verwenden?
-
21-09-2019 - |
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.
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)