Доступен сборочный инструментарий Qbs 1.11, развиваемый проектом Qt
Как сообщает opennet.ru Сформирован релиз развиваемого проектом Qt сборочного инструментария Qbs 1.11 (Qt Build Suite), который заменит qmake в Qt 6. В отличие от qmake, Qbs не привязан к Qt и изначально рассчитан на организацию сборки любых проектов. Qbs использует упрощенный вариант языка QML для определения сценариев сборки проекта, что позволяет определять достаточно гибкие правила сборки, в которых могут подключаться внешние модули, использоваться функции на JavaScript и создаваться произвольные правила сборки.
Используемый в Qbs язык сценариев адаптирован для автоматизации генерации и разбора сценариев сборки интегрированными средами разработки. Кроме того, Qbs не генерирует make-файлы, а сам, без посредников, таких как утилита make, контролирует запуск компиляторов и компоновщиков, оптимизируя процесс сборки на основе детального графа всех зависимостей. Наличие изначальных данных о структуре и зависимостях в проекте позволяет эффективно распараллеливать выполнение операций в несколько потоков. Для крупных проектов, состоящих из большого числа файлов и поддиректорий, производительность повторной пересборки с использованием Qbs может опережать make в разы - пересборка выполняется почти мгновенно и не заставляет разработчика тратить время на ожидание.
В новой версии:
- В дополнение к свойствам qbs.targetOS и qbs.toolchain, в которых используются списки, предложены аналогичные скалярные свойства qbs.targetPlatform и qbs.toolchainType, которые проще использовать для задания целевой платформы из командной строки и в профилях;
- В модулях обеспечена возможность определения собственных настроек целевых платформ при помощи нового свойства filesAreTargets для элемента Group;
- В дополнение к TextFile добавлен сервис BinaryFile для чтения и записи бинарных файлов;
- Добавлено свойство cpp.rpathOrigin, через которое можно получить значение @loader_path в Darwin и $ORIGIN в других Unix-подобных платформах;
- Добавлено свойство cpp.driverLinkerFlags, предоставляющее возможность определения флагов, которые будут переданы форнтэнду компилятора только при компоновке.
- В качестве версии языка С++ (cpp.cxxLanguageVersion) теперь можно указывать значение "c++17";
- Механизм автоопределения GCC-подобных компиляторов теперь учитывает типовые для MinGW префиксы (т. е. корректно определяет файлы типа i686-w64-mingw32-gcc);
- Для задания имен файлов конфигурации предложен новый ключ "config" и возможность передавать аргументы в форме "ключ: значение". Например для сборки проекта для двух конфигураций debug и release можно запустить "qbs config:debug config:release";
- Функциональность "run", используемая в одноименной команде, теперь учитывает необходимые для заданного исполняемого файла библиотеки и добавляет пути к ним в переменные окружения (LD_LIBRARY_PATH в Unix, DYLD_LIBRARY_PATH/DYLD_FRAMEWORK_PATH в macOS и PATH в Windows).