Wydanie narzędzi do kompilacji Qbs 1.21 i rozpoczęcie testów Qt 6.3

Ogłoszono wydanie narzędzi do kompilacji Qbs 1.21. Jest to ósme wydanie odkąd firma Qt odeszła od rozwoju projektu, przygotowane przez społeczność zainteresowaną dalszym rozwojem Qbs. Aby zbudować Qbs, wśród zależności wymagany jest Qt, chociaż sam Qbs jest przeznaczony do organizowania montażu dowolnych projektów. Qbs używa uproszczonej wersji języka QML do definiowania skryptów kompilacji projektów, co pozwala na zdefiniowanie dość elastycznych reguł kompilacji, które mogą łączyć moduły zewnętrzne, korzystać z funkcji JavaScript i tworzyć niestandardowe reguły kompilacji.

Język skryptowy używany w Qbs jest przystosowany do automatyzacji generowania i analizowania skryptów kompilacji przez IDE. Dodatkowo Qbs nie generuje plików makefile, a sam, bez pośredników takich jak narzędzie make, kontroluje uruchamianie kompilatorów i linkerów, optymalizując proces kompilacji w oparciu o szczegółowy wykres wszystkich zależności. Obecność początkowych danych o strukturze i zależnościach w projekcie pozwala efektywnie zrównoleglić wykonywanie operacji w kilku wątkach. W przypadku dużych projektów składających się z dużej liczby plików i podkatalogów, wydajność przebudowy przy użyciu Qbs może być kilkukrotnie większa niż make - przebudowa jest niemal natychmiastowa i nie powoduje, że programista traci czas na czekanie.

Przypomnijmy, że w 2018 roku firma Qt podjęła decyzję o zaprzestaniu rozwoju Qbs. Qbs został opracowany jako zamiennik qmake, ale ostatecznie zdecydowano się na użycie CMake jako głównego systemu kompilacji Qt w dłuższej perspektywie. Rozwój Qbs jest obecnie kontynuowany jako niezależny projekt wspierany przez siły społeczne i zainteresowanych programistów. Infrastruktura Qt Company jest w dalszym ciągu wykorzystywana do rozwoju.

Kluczowe innowacje w Qbs 1.21:

  • Przeprojektowano mechanizm dostawców modułów (generatorów modułów). W przypadku frameworków takich jak Qt i Boost możliwe jest teraz użycie więcej niż jednego dostawcy, określenie, który dostawca ma być uruchamiany przy użyciu nowej właściwości qbsModuleProviders oraz określenie priorytetu wyboru modułów generowanych przez różnych dostawców. Na przykład możesz określić dwóch dostawców „Qt” i „qbspkgconfig”, z których pierwszy spróbuje użyć instalacji Qt użytkownika (poprzez wyszukiwanie qmake), a jeśli taka instalacja nie zostanie znaleziona, drugi dostawca spróbuje użyć Qt dostarczony przez system (poprzez wywołanie pkg-config): CppApplication { Zależy {zależne { nazwa: "Qt.core" } pliki: "main.cpp" qbsModuleProviders: ["Qt", "qbspkgconfig"] }
  • Dodano dostawcę „qbspkgconfig”, który zastąpił dostawcę modułu „awaryjnego”, który próbował wygenerować moduł za pomocą pkg-config, jeśli żądany moduł nie został wygenerowany przez innych dostawców. W przeciwieństwie do „fallback”, „qbspkgconfig” zamiast wywoływać narzędzie pkg-config wykorzystuje wbudowaną bibliotekę C++ do bezpośredniego odczytu plików „.pc”, co przyspiesza pracę i dostarcza dodatkowych informacji o zależnościach pakietów, które nie są dostępne przy wywołaniu narzędzia Narzędzie pkg-config.
  • Dodano obsługę specyfikacji C++23, która definiuje przyszły standard C++.
  • Dodano obsługę architektury Elbrus E2K dla zestawu narzędzi GCC.
  • W przypadku platformy Android dodano właściwość Android.ndk.buildId, aby zastąpić domyślną wartość flagi konsolidatora „--build-id”.
  • Moduły capnproto i protobuf implementują możliwość korzystania ze środowisk wykonawczych dostarczonych przez dostawcę qbspkgconfig.
  • Rozwiązano problemy ze śledzeniem zmian w plikach źródłowych we FreeBSD spowodowane utratą milisekund podczas szacowania czasu modyfikacji plików.
  • Dodano właściwość ConanfileProbe.verbose, aby ułatwić debugowanie projektów korzystających z menedżera pakietów Conan.

Dodatkowo możemy odnotować rozpoczęcie testów alfa frameworku Qt 6.3, który implementuje nowy moduł „Qt Language Server” z obsługą protokołów Language Server i JsonRpc 2.0, duża część nowych funkcji została dodana do Qt Core w module Qt Quick Dialogs zaimplementowano moduł MessageDialog typu QML. Aby móc korzystać z okien dialogowych udostępnianych przez platformę, do modułu Qt Wayland Compositor dodano złożony serwer Qt Shell oraz API do tworzenia własnych, niestandardowych rozszerzeń powłoki. .

Moduł Qt QML oferuje implementację kompilatora qmltc (kompilator typu QML), który umożliwia kompilowanie struktur obiektowych QML w klasy w języku C++. Dla komercyjnych użytkowników Qt 6.3 rozpoczęły się testy produktu Qt Quick Compiler, który oprócz wspomnianego wyżej QML Type Compiler zawiera QML Script Compiler, pozwalający na kompilację funkcji i wyrażeń QML do kodu C++. Należy zauważyć, że zastosowanie Qt Quick Compiler przybliży wydajność programów opartych na QML do programów natywnych; w szczególności podczas kompilacji rozszerzeń następuje skrócenie czasu uruchamiania i wykonywania o około 30% w porównaniu do korzystania z wersji interpretowanej .

Źródło: opennet.ru

Dodaj komentarz