Доступен сборочный инструментарий Qbs 1.11, развиваемый проектом Qt

Сформирован релиз развиваемого проектом 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).

© OpenNet