Qt Company Build-Toolset (Qt Build Suite). Dies ist die letzte Version von Qbs, die von der Qt Company veröffentlicht wird. Wie bereits erwähnt, gab es zuvor die Entscheidung, die Entwicklung von Qbs einzustellen. Qbs wurde als Ersatz für qmake entwickelt, jedoch wurde letztendlich beschlossen, CMake als primäres Build-System für Qt auf lange Sicht zu verwenden.
In naher Zukunft wird erwartet, dass ein unabhängiges Projekt zur Fortsetzung der Entwicklung von Qbs durch die Community ins Leben gerufen wird, dessen Schicksal vom Interesse unabhängiger Entwickler an diesem Build-System abhängt. Die Qt Company stellt die Arbeit an Qbs wegen der Notwendigkeit zusätzlicher Investitionen und hoher Kosten für die Förderung von Qbs ein.
Es sei daran erinnert, dass für den Build von Qbs als Abhängigkeit Qt erforderlich ist, obwohl Qbs selbst darauf ausgelegt ist, den Build beliebiger Projekte zu organisieren. Qbs verwendet eine vereinfachte Version von QML zur Definition von Build-Skripten, was die Festlegung flexiblerer Build-Regeln ermöglicht, in die externe Module eingebunden, JavaScript-Funktionen verwendet und benutzerdefinierte Build-Regeln erstellt werden können.
Qbs generiert keine Makefiles und steuert selbstständig den Start von Compilern und Linkern, wobei der Build-Prozess auf der Grundlage eines detaillierten Graphen aller Abhängigkeiten optimiert wird. Die Verfügbarkeit von Ausgangsdaten über die Struktur und Abhängigkeiten des Projekts ermöglicht eine effiziente parallele Ausführung von Operationen in mehreren Threads.
Die wichtigsten Neuerungen in Qbs 1.13:
- Die Möglichkeit, in Projekten Module von pkg-config mithilfe desselben Abhängigkeitsverarbeitungsmechanismus zu verwenden, der auch für Qbs-Module verwendet wird, wurde hinzugefügt. Zum Beispiel, wenn ein Paket zum Bauen von OpenSSL im System verfügbar ist, reicht es aus, ‘Depends { name: «openssl» }’ hinzuzufügen, um es im Qbs-Projekt zu verwenden;
- Die automatische Erkennung verfügbarer Qt-Module wurde implementiert. Entwickler müssen kein Profil mit den Pfaden zu den Modulen mehr erstellen, indem sie den Befehl setup-qt verwenden, alle in den Abhängigkeiten angegebenen Qt-Module werden automatisch konfiguriert;
- Mittel zur Kontrolle der Anzahl parallel gestarteter Build-Aufgaben auf der Ebene einzelner Teams wurden hinzugefügt. Beispielsweise entsteht bei der Ausführung des Linkers eine große Belastung der Ein-/Ausgabe und es wird ein erheblicher Speicherbedarf benötigt. Daher erfordert der Linker andere Startkonfigurationen als der Compiler. Separate Einstellungen können jetzt mit dem Befehl «qbs —job-limits linker:2,compiler:8» festgelegt werden;
- Änderungen an der Skriptsprache wurden vorgenommen. Regeln können jetzt ohne Angabe einer Ausgabedatei definiert werden, und am Anfang der Projektdateien muss nicht unbedingt die Direktive «import qbs» verwendet werden. Den Elementen Application, DynamicLibrary und StaticLibrary wurden neue Eigenschaften install und installDir für eine bequemere Installation von ausführbaren Dateien hinzugefügt;
- Unterstützung für rekursives Scannen von Linker-Skripten wurde hinzugefügt.
GNU-Linker; - Für die Programmiersprache C++ wurde die Eigenschaft cpp.linkerVariant implementiert, um die Verwendung der Linker ld.gold, ld.bfd oder lld zu erzwingen;
- Für Qt wurde die Eigenschaft Qt.core.enableBigResources zur Erstellung großer Qt-Ressourcen eingeführt.
- Anstelle des veralteten Elements AndroidApk wird empfohlen, den allgemeinen Typ Application zu verwenden;
- Ein Modul zur Erstellung von Tests auf Basis von autotest wurde hinzugefügt;
- Ein Modul texttemplate mit Funktionen ähnlich QMAKE_SUBSTITUTES in qmake wurde hinzugefügt;
- Anfängliche Unterstützung für das Format Protocol Buffers für C++ und Objective-C wurde hinzugefügt.
Quelle: opennet.ru
