Представен е новият инструментариум за сборка Qbs 1.21. Това е осмото издание след напускането на компанията Qt Company от разработването на проекта, подготвено от общността, заинтересована в продължаването на развитието на Qbs. За сборката на Qbs са необходими Qt в зависимостите, въпреки че самият Qbs е предназначен за организиране на сборката на всякакви проекти. Qbs използва опростена версия на езика QML за определяне на сценарии на проекта, което позволява определянето на доста гъвкави правила за сборка, в които могат да се включват външни модули, да се използват функции на JavaScript и да се създават произволни правила за сборка.
Използваният в Qbs език за сценарии е адаптиран за автоматизация на генерирането и анализа на сценарии за компилация в интегрирани среди за разработка. Освен това, Qbs не генерира make-файлове, а сам, без посредници, като утилитата make, контролира стартиранията на компилатори и линковчици, оптимизирайки процеса на компилация на базата на подробен граф на всички зависимости. Наличието на първоначални данни за структурата и зависимостите в проекта позволява ефективно паралелно изпълнение на операции в множество потоци. За големи проекти, състоящи се от много файлове и подпапки, производителността на повторна компилация с Qbs може значително да превъзхожда make — повторната компилация се извършва почти мигновено и не накара разработчика да губи време в чакане.
Напомняме, че през 2018 година компанията Qt Company взе решение да прекрати разработката на Qbs. Qbs се развиваше като замяна на qmake, но в крайна сметка беше решено да се използва CMake като основна система за компилация за Qt в дългосрочен план. Разработката на Qbs сега продължава под формата на независим проект, поддържан от общността и заинтересовани разработчици. Инфраструктурата на Qt Company все още се използва за разработката.
Основни нововъведения в Qbs 1.21:
- Преработен е механизмът на доставчиците на модули (генератори на модули). За рамки като Qt и Boost сега може да се използват повече от един доставчик, да се определи кой доставчик да се стартира чрез новото свойство qbsModuleProviders и да се указва приоритет за избора на генерирани от различни доставчици модули. Например, може да се посочат два доставчика „Qt“ и „qbspkgconfig“, като първият ще се опита да използва потребителска инсталация на Qt (чрез търсене на qmake), а ако подобна инсталация не бъде намерена, вторият доставчик ще опита да задейства Qt, предоставен от системата (чрез извикване на pkg-config): CppApplication { Depends { name: „Qt.core“ } files: „main.cpp“ qbsModuleProviders: [„Qt“, „qbspkgconfig“] }
- Добавен е доставчикът „qbspkgconfig“, който замени модула „fallback“, опитващ се да генерира модул чрез pkg-config, ако исканият модул не е бил генериран от други доставчици. За разлика от „fallback“, в „qbspkgconfig“ вместо извикване на утилитата pkg-config се използва вградена C++ библиотека за директно четене на файлове „.pc“, което позволява по-бърза работа и получаване на допълнителна информация за зависимостите на пакетите, недостъпна при извикване на утилитата pkg-config.
- Добавена е поддръжка на спецификацията C++23, определяща бъдещия стандарт на C++.
- За инструментариума GCC е добавена поддръжка на архитектурата Elbrus E2K.
- За платформата Android е добавено свойството Android.ndk.buildId, позволяващо преопределяне на стойността по подразбиране за флага на компилатора „—build-id“.
- В модулите capnproto и protobuf е реализирана възможност за използване на runtime, предоставени от доставчика qbspkgconfig.
- Решени са проблемите с проследяване на промените в файловете с изходен код на платформата FreeBSD, възникващи поради отхвърлянето на милисекундите при оценка на времето на промяна на файла.
- Добавено е свойството ConanfileProbe.verbose, което опростява отстраняването на грешки в проекти, използващи пакетния мениджър Conan.
Допълнително може да се отбележи началото на алфа тестовете на фреймуърка Qt 6.3, в който е реализиран новият модул "Qt Language Server" с поддръжка на протоколите Language Server и JsonRpc 2.0, в модула Qt Core е добавена голяма порция нови функции, в модула Qt Quick Dialogs е реализиран QML тип MessageDialog за използване на предоставените от платформата диалогови прозорци, в модула Qt Wayland Compositor е добавен композитен. сървър Qt Shell и API за създаване на собствени разширения на потребителския интерфейс.
В модула Qt QML е предложена реализация на компилатора qmltc (QML тип компилатор), който позволява компилирането на структури от обекти QML в класове на езика C++. За комерсиални потребители на Qt 6.3 започна тестовете на продукта Qt Quick Compiler, който освен споменатия QML Type Compiler включва QML Script Compiler, позволяващ компилирането на функции и изрази QML в код на C++. Отбелязва се, че приложението на Qt Quick Compiler ще приближи производителността на приложенията на базата на QML до тези на nativната, особено при компилация на разширения, като се отбелязва намаляване на времето за стартиране и изпълнение с приблизително 30% в сравнение с използването на интерпретируемата версия.
Източник: opennet.ru
