Die Veröffentlichung des Build-Tools Qbs 1.21 wurde vorgestellt. Dies ist die achte Ausgabe nach dem Rückzug der Qt Company aus der Entwicklung des Projekts, die von einer Gemeinschaft vorbereitet wurde, die an einer Fortsetzung der Qbs-Entwicklung interessiert ist. Für den Build von Qbs sind Abhängigkeiten zu Qt erforderlich, obwohl Qbs selbst darauf ausgelegt ist, Builds für beliebige Projekte zu organisieren. Qbs verwendet eine vereinfachte Variante der QML-Sprache, um Build-Skripte zu definieren, was es ermöglicht, ausreichend flexible Build-Regeln festzulegen, in die externe Module eingebunden, JavaScript-Funktionen verwendet und beliebige Build-Regeln erstellt werden können.
Die in Qbs verwendete Skriptsprache wurde zur Automatisierung der Generierung und Analyse von Build-Skripten in integrierten Entwicklungsumgebungen angepasst. Darüber hinaus generiert Qbs keine Makefiles, sondern steuert direkt die Ausführung von Compilern und Linkern ohne zwischengeschaltete Tools wie das Make-Utility und optimiert den Build-Prozess basierend auf einem detaillierten Graphen aller Abhängigkeiten. Das Vorhandensein von ursprünglichen Daten über die Struktur und Abhängigkeiten im Projekt ermöglicht es, Operationen effizient in mehreren Threads parallel auszuführen. Bei großen Projekten, die aus zahlreichen Dateien und Unterverzeichnissen bestehen, kann die Leistung der erneuten Erstellung mit Qbs die von Make um ein Vielfaches übertreffen – die erneute Erstellung erfolgt nahezu sofort und lässt den Entwickler nicht unnötig warten.
Erinnern wir uns daran, dass die Qt Company 2018 die Entscheidung traf, die Entwicklung von Qbs einzustellen. Qbs wurde als Ersatz für qmake entwickelt, aber letztendlich wurde beschlossen, CMake als primäres Build-System für Qt langfristig zu verwenden. Die Entwicklung von Qbs wird nun in Form eines unabhängigen Projekts fortgesetzt, das von der Gemeinschaft und interessierten Entwicklern unterstützt wird. Die Infrastruktur der Qt Company wird weiterhin für die Entwicklung genutzt.
Die wichtigsten Neuerungen von Qbs 1.21:
- Der Mechanismus für Modulprovider (Modulgeneratoren) wurde überarbeitet. Für Frameworks wie Qt und Boost ist es jetzt möglich, mehrere Provider zu verwenden, den zu startenden Provider über die neue Eigenschaft qbsModuleProviders zu definieren und Prioritäten zur Auswahl von Modulen festzulegen, die von verschiedenen Providern generiert wurden. Beispielsweise können zwei Provider, "Qt" und "qbspkgconfig", angegeben werden; der erste versucht, die benutzerdefinierte Installation von Qt zu verwenden (durch die Suche nach qmake), und falls eine solche Installation nicht gefunden wird, versucht der zweite Provider, Qt zu verwenden, das vom System bereitgestellt wird (über den Aufruf von pkg-config): CppApplication { Depends { name: "Qt.core" } files: "main.cpp" qbsModuleProviders: ["Qt", "qbspkgconfig"] }
- Der Anbieter «qbspkgconfig» wurde hinzugefügt und ersetzt den Modulanbieter «fallback», der versuchte, ein Modul mit pkg-config zu generieren, wenn das gesuchte Modul nicht von anderen Anbietern erzeugt wurde. Im Gegensatz zu «fallback» verwendet «qbspkgconfig» anstelle des Aufrufs der pkg-config-Utility eine integrierte C++-Bibliothek, um direkt die «.pc»-Dateien auszulesen. Dies ermöglicht eine Beschleunigung der Verarbeitung und liefert zusätzliche Informationen über die Paketabhängigkeiten, die beim Aufruf der pkg-config-Utility nicht verfügbar sind.
- Die Unterstützung für die C++23-Spezifikation wurde hinzugefügt, die den zukünftigen C++-Standard definiert.
- Für das GCC-Toolset wurde Unterstützung für die Architektur Elbrus E2K hinzugefügt.
- Für die Android-Plattform wurde die Eigenschaft Android.ndk.buildId hinzugefügt, die es ermöglicht, den Standardwert für das Linker-Flag «—build-id» zu überschreiben.
- In den Modulen capnproto und protobuf wurde die Möglichkeit implementiert, Runtime von dem Anbieter qbspkgconfig zu verwenden.
- Probleme mit der Nachverfolgung von Änderungen in Quelldateien auf der FreeBSD-Plattform, die durch das Weglassen von Millisekunden bei der Zeitbewertung der Dateiänderung verursacht wurden, wurden behoben.
- Es wurde die Eigenschaft ConanfileProbe.verbose hinzugefügt, die das Debuggen von Projekten, die den Paketmanager Conan verwenden, erleichtert.
Zusätzlich kann der Beginn der Alpha-Testphase des Frameworks Qt 6.3 erwähnt werden, in dem ein neues Modul "Qt Language Server" eingeführt wurde, das die Protokolle Language Server und JsonRpc 2.0 unterstützt. Im Modul Qt Core wurden zahlreiche neue Funktionen integriert, während im Modul Qt Quick Dialogs der QML-Typ MessageDialog für die Nutzung der von der Plattform bereitgestellten Dialogfenster eingeführt wurde. Darüber hinaus wurde im Modul Qt Wayland Compositor ein Kompositing hinzugefügt. der Server Qt Shell und API zur Erstellung eigener Erweiterungen der Benutzeroberfläche.
Im Modul Qt QML wurde der Compiler qmltc (QML Type Compiler) implementiert, der es ermöglicht, QML-Objektstrukturen in C++-Klassen zu kompilieren. Für kommerzielle Benutzer hat das Testen des Produkts Qt Quick Compiler in Qt 6.3 begonnen, das neben dem oben genannten QML Type Compiler auch den QML Script Compiler umfasst, der Funktionen und Ausdrücke in QML in C++-Code umwandelt. Es wird darauf hingewiesen, dass die Nutzung von Qt Quick Compiler die Leistung von QML-basierten Anwendungen näher an die von nativen Programmen heranführen wird, insbesondere bei der Kompilierung von Erweiterungen wird eine Verkürzung der Start- und Ausführungszeit um etwa 30 % im Vergleich zur Verwendung der interpretierbaren Variante festgestellt.
Quelle: opennet.ru
