Разработчики Qt представили инструментарий для сборки проектов qbs
Использование упрощённой версии QML для оформления файлов с правилами сборки с одной стороны упрощает обеспечение поддержки в интегрированных средах разработки, а с другой позволяет реализовать нестандартные шаги, интегрируя в файл сборки функции, реализованные на языке JavaScript, а также подключая внешние модули. Например, в qbs можно создавать свои дополнительные правила, позволяющие задействовать дополнительные генераторы кода и компиляторы ресурсов, для трансформации файлов из одного типа в другой. Исходя из данного высокоуровневого описания в проектном файле, qbs генерирует корректный и очень подробный граф всех зависимостей проекта. В отличии от qmake, - qbs жестко не привязан к Qt и может использоваться для организации сборки любых программных продуктов.
Главное же отличие qbs в том, что классические makefile-генераторы, такие как qmake или CMake, создают лишь makefile’ы, оставляя непосредственно процесс сборки на откуп таких инструментов, как make или ninja. В отличие от данной схемы, qbs берёт на себя и роль утилиты make, без посредников напрямую запуская компиляторы, линковщики или другие инструменты сборки, такие как SCons или Ant. Сборка осуществляется в режиме параллельного выполнения нескольких сборочных потоков. Qbs изначально видит весь проект целиком, без необходимости поиска дополнительных сборочных файлов в поддиректориях, что позволяет в сочетании с техникой инкрементальной сборки достигнуть высокой производительности, заметно опережающей стандартную утилиту make. Например, для проекта из 200 библиотек, по 50 C++ классов в каждой, повторная пересборка, в ситуации когда с прошлой сборки не внесено изменений, занимает в qbs 0.843 сек., а при использовании make более 4 секунд.
Отмечается, что по сравнению с такими пакетами, как CMake и GNU Autotools, в qbs пока мало возможностей для организации полноценной кросс-платформенной сборки, учитывающей многочисленные нюансы различных программных окружений. Поэтому qbs пока невозможно использовать для серьёзных проектов в качестве полноценного аналога CMake и GNU Autotools. Тем не менее, подчеркивается, что qbs ещё на начальной стадии развития и воспринимать его следует пока только как экспериментальный проект.
Пример простого сборочного файла helloworld.qbp:
import qbs.base 1.0 Application { name: "HelloWorld" files: "main.cpp" Depends { name: "cpp" } }
Более сложный пример, с импортом вспомогательной функции planetsCorrectlyAligned из файла helpers.js.
import qbs.base 1.0 import "helpers.js" as Helpers Product { name: "myproject" Group { condition: Helpers.planetsCorrectlyAligned() file: "magic_hack.cpp" } }
Источник: http://www.opennet.ru/opennews/art.shtml?num=33102
|
0 | Tweet | Нравится |
|