Представено издание на инструментария за компилация 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, до нативните приложения; в частност, при компилиране на разширения се отбелязва намаляване на времето за стартиране и изпълнение с около 30% в сравнение с използването на интерпретирана версия.
Източник: opennet.ru
