Опубликован (http://blog.qt.io/blog/2018/07/19/qbs-1-12-released/) релиз развиваемого проектом Qt сборочного инструментария Qbs 1.12 (http://qt-project.org/wiki/qbs) (Qt Build Suite), который заменит qmake в Qt 6. В отличие от qmake, Qbs не привязан к Qt и изначально рассчитан на организацию сборки любых проектов. Qbs использует упрощённый вариант языка QML для определения сценариев сборки проекта, что позволяет определять достаточно гибкие правила сборки, в которых могут подключаться внешние модули, использоваться функции на JavaScript и создаваться произвольные правила сборки.Используемый в Qbs язык сценариев адаптирован для автоматизации генерации и разбора сценариев сборки интегрированными средами разработки. Кроме того, Qbs не генерирует make-файлы, а сам, без посредников, таких как утилита make, контролирует запуск компиляторов и компоновщиков, оптимизируя процесс сборки на основе детального графа всех зависимостей. Наличие изначальных данных о структуре и зависимостях в проекте позволяет эффективно распараллеливать выполнение операций в несколько потоков. Для крупных проектов, состоящих из большого числа файлов и поддиректорий, производительность повторной пересборки с использованием Qbs может опережать make в разы - пересборка выполняется почти мгновенно и не заставляет разработчика тратить время на ожидание.
В новой версии:
- Для упрощения оформления библиотек для применения в сторонних проектах реализованы два новых модуля: Exporter.qbs (http://doc.qt.io/qbs/qml-qbsmodules-exporter-qbs.html) для создания qbs-модуля для итогового продукта (http://doc.qt.io/qbs/qml-qbslanguageitems-product.html) и Exporter.pkgconfig (http://doc.qt.io/qbs/qml-qbsmodules-exporter-pkgconfig.html) для генерации файла ".pc" с метаданными pkgconfig. Указанные файлы включают информацию, необходимую для сборки сторонних проектов с предоставляемой библиотекой (например, в случае применения Exporter.qbs для использования библиотеки в другом qbs-проекте достаточно определить зависимость 'Depends { name: "mylib" }');
- В утилиту qbs-config добавлен новый тип настроек - системные настройки, действующие для всех пользователей (например, пути поиска исполняемых файлов и библиотек). Для манипуляции системными настройками добавлена опция "--system", применение которой возможно только при наличии прав администратора;
- Добавлен новый тип свойств varList для списков объектов;
- В расширении FileInfo представлены две новые функции suffix (https://doc.qt.io/qbs/jsextension-fileinfo.html#suffix) и completeSuffix (https://doc.qt.io/qbs/jsextension-fileinfo.html#completesuffix);
- В блоке Rule свойство explicitlyDependsOn больше не заимствует зависимости из других зависимостей (для выполнения данной операции предложено отдельное свойство explicitlyDependsOnFromDependencies. Для исключения путаницы свойство excludedAuxiliaryInputs переименовано в excludedInputs;
- Свойства cLanguageVersion и cxxLanguageVersion преобразованы в массивы и могут включать более одного значения, что позволяет в разных модулях определять разные требования к версиям языка;
- В блок AutotestRunner добавлено свойство auxiliaryInputs для проверки наличия дополнительных ресурсов, необходимых для запуска autotest;
- Во всех командах обеспечен вывод имени продукта для всех генерируемых объектов, что может быть полезно в больших проектах, в которых присутствует несколько продуктов, содержащих файлы с одинаковыми именами;
- Добавлена возможность генерации сборочных файлов в формате Makefiles для проектов Qbs.
URL: http://blog.qt.io/blog/2018/07/19/qbs-1-12-released/
Новость: https://www.opennet.me/opennews/art.shtml?num=48990