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

Опубликован релиз развиваемого проектом Qt сборочного инструментария Qbs 1.12 (Qt Build Suite), который заменит qmake в Qt 6. В отличие от qmake, Qbs не привязан к Qt и изначально рассчитан на организацию сборки любых проектов. Qbs использует упрощённый вариант языка QML для определения сценариев сборки проекта, что позволяет определять достаточно гибкие правила сборки, в которых могут подключаться внешние модули, использоваться функции на JavaScript и создаваться произвольные правила сборки.

Используемый в Qbs язык сценариев адаптирован для автоматизации генерации и разбора сценариев сборки интегрированными средами разработки. Кроме того, Qbs не генерирует make-файлы, а сам, без посредников, таких как утилита make, контролирует запуск компиляторов и компоновщиков, оптимизируя процесс сборки на основе детального графа всех зависимостей. Наличие изначальных данных о структуре и зависимостях в проекте позволяет эффективно распараллеливать выполнение операций в несколько потоков. Для крупных проектов, состоящих из большого числа файлов и поддиректорий, производительность повторной пересборки с использованием Qbs может опережать make в разы — пересборка выполняется почти мгновенно и не заставляет разработчика тратить время на ожидание.

В новой версии:

  • Для упрощения оформления библиотек для применения в сторонних проектах реализованы два новых модуля: Exporter.qbs для создания qbs-модуля для итогового продукта и Exporter.pkgconfig для генерации файла ».pc» с метаданными pkgconfig. Указанные файлы включают информацию, необходимую для сборки сторонних проектов с предоставляемой библиотекой (например, в случае применения Exporter.qbs для использования библиотеки в другом qbs-проекте достаточно определить зависимость 'Depends { name: «mylib» }');
  • В утилиту qbs-config добавлен новый тип настроек — системные настройки, действующие для всех пользователей (например, пути поиска исполняемых файлов и библиотек). Для манипуляции системными настройками добавлена опция »--system», применение которой возможно только при наличии прав администратора;
  • Добавлен новый тип свойств varList для списков объектов;
  • В расширении FileInfo представлены две новые функции suffix и completeSuffix;
  • В блоке Rule свойство explicitlyDependsOn больше не заимствует зависимости из других зависимостей (для выполнения данной операции предложено отдельное свойство explicitlyDependsOnFromDependencies. Для исключения путаницы свойство excludedAuxiliaryInputs переименовано в excludedInputs;
  • Свойства cLanguageVersion и cxxLanguageVersion преобразованы в массивы и могут включать более одного значения, что позволяет в разных модулях определять разные требования к версиям языка;
  • В блок AutotestRunner добавлено свойство auxiliaryInputs для проверки наличия дополнительных ресурсов, необходимых для запуска autotest;
  • Во всех командах обеспечен вывод имени продукта для всех генерируемых объектов, что может быть полезно в больших проектах, в которых присутствует несколько продуктов, содержащих файлы с одинаковыми именами;
  • Добавлена возможность генерации сборочных файлов в формате Makefiles для проектов Qbs.

© OpenNet