Qt Company Build-Toolkit (Qt Build Suite). Dies ist die letzte Version von Qbs, die von der Qt Company entwickelt wird. Erinnern wir uns, dass zuvor die Entscheidung getroffen wurde, die Entwicklung von Qbs einzustellen. Qbs wurde als Ersatz für qmake entwickelt, doch schließlich wurde beschlossen, CMake als primäres Build-System für Qt langfristig zu verwenden.
In naher Zukunft wird ein unabhängiges Projekt zur Fortführung der Entwicklung von Qbs durch die Community erwartet, dessen Schicksal von dem Interesse unabhängiger Entwickler an diesem Build-System abhängt. Die Qt Company stellt die Arbeit an Qbs ein, da zusätzliche Investitionen und hohe Kosten für die Vermarktung von Qbs erforderlich sind.
Erinnern wir uns, dass für den Bau von Qbs als Abhängigkeit Qt erforderlich ist, obwohl Qbs darauf ausgelegt ist, die Erstellung beliebiger Projekte zu organisieren. Qbs verwendet eine vereinfachte Version der QML-Sprache, um Build-Skripte zu definieren, was es ermöglicht, genug flexible Build-Regeln festzulegen, bei denen externe Module eingebunden, JavaScript-Funktionen verwendet und beliebige Build-Regeln erstellt werden können.
Qbs generiert keine Make-Dateien und steuert selbstständig den Start von Compilern und Linkern, wodurch der Build-Prozess anhand eines detaillierten Abhängigkeitsgraphen optimiert wird. Durch die ursprünglichen Daten zur Struktur und zu den Abhängigkeiten im Projekt können Operationen effizient in mehreren Threads parallelisiert werden.
Die Hauptneuerungen in Qbs 1.13:
- Es wurde die Möglichkeit hinzugefügt, in Projekten pkg-config-Module zu verwenden, wobei der gleiche Abhängigkeitsmechanismus verwendet wird wie für Qbs-Module. Wenn beispielsweise in Ihrem System ein Paket zum Bauen von OpenSSL auf Basis von pkg-config vorhanden ist, reicht es, für dessen Verwendung im Qbs-Projekt 'Depends { name: "openssl" }' hinzuzufügen;
- Die automatische Erkennung verfügbarer Qt-Module wurde implementiert. Entwickler müssen kein Profil mit Pfaden zu den Modulen mehr erstellen, indem sie den Befehl setup-qt verwenden; alle in den Abhängigkeiten angegebenen Qt-Module werden automatisch eingerichtet.
- Es wurden Mittel zur Kontrolle der Anzahl parallel ausgeführter Build-Tasks auf Teamebene hinzugefügt. Bei der Durchführung von Bindungsprozessen entsteht beispielsweise eine hohe Ein- und Auslastung, die einen erheblichen Speicherbedarf verursacht, weshalb der Linker andere Startkonfigurationen als der Compiler erfordert. Getrennte 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 Stub-Ausgabedatei definiert werden, und es ist nicht mehr erforderlich, am Anfang der Projektdateien die Direktive „import qbs“ zu verwenden. Neue Eigenschaften install und installDir wurden zu den Elementen Application, DynamicLibrary und StaticLibrary hinzugefügt, um die Installation von ausführbaren Dateien zu erleichtern.
- Unterstützung für rekursive Scans von Linkerskripten 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.
- Das veraltete Element AndroidApk sollte durch den allgemeinen Typ Application ersetzt werden;
- Ein Modul zur Erstellung von Tests auf Basis von autotest wurde hinzugefügt.
- Das Modul texttemplate wurde hinzugefügt, mit Funktionen, die den QMAKE_SUBSTITUTES in qmake ähneln.
- Erste Unterstützung für das Protocol Buffers-Format für C++ und Objective-C wurde hinzugefügt.
Quelle: opennet.ru
