The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

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

Опубликован релиз развиваемого проектом Qt сборочного инструментария Qbs 1.12 (Qt Build Suite), который заменит qmake в Qt 6. Для сборки Qbs в качестве зависимости требуется Qt, хотя сам Qbs рассчитан на организацию сборки любых проектов. 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.


  1. Главная ссылка к новости (http://blog.qt.io/blog/2018/07...)
  2. OpenNews: Доступен сборочный инструментарий Qbs 1.11, развиваемый проектом Qt
  3. OpenNews: Разработчик языка XL опубликовал новую сборочную систему build
  4. OpenNews: Доступна система сборки Meson 0.42, на которую переходят systemd, GTK+ и GNOME
  5. OpenNews: Релиз генератора файлов сборки GNU Automake 1.16
  6. OpenNews: Релиз системы сборки CMake 3.12
Лицензия: CC-BY
Тип: Программы
Ключевые слова: qbs, build
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Аноним (1), 23:34, 19/07/2018 [ответить] [показать ветку] [···]    [к модератору]
  • +1 +/
    Юзаю qbs, нравится, особенно в сравнении с cmake, qmake и подобными
     
     
  • 2.2, Аноним_ка (?), 00:26, 20/07/2018 [^] [ответить]    [к модератору]
  • +3 +/
    Документирован только вот хреново.
     
  • 2.3, Аноним (3), 01:36, 20/07/2018 [^] [ответить]    [к модератору]
  • +/
    А я попробовал и в ужасе вернулся на замечательный cmake.
     
     
  • 3.5, Тот_Самый_Анонимус (?), 05:56, 20/07/2018 [^] [ответить]    [к модератору]
  • +/
    Это называется «ниасилил».
     
     
  • 4.7, Владимир (??), 06:09, 20/07/2018 [^] [ответить]    [к модератору]
  • +/
    Нет, не обязательно. Я был и остаюсь Qbs-фаном (я стал его использовать в продакшене с версии 1.0.0), статьи на хабр писал для агитации. Но у Qbs остается много недостатков по сравнению с CMake.
    Один из главных на мой взгляд - разработчики забивают на то что нужно пользователям.
    Посмотрите сколько тикет висел на реализацию VS генератора после прохождения ревью. Три года.
    Сколько висит тикет на реализацию XCode генератора? он до сих пор открыт.
    Почитайте ченджлоги Qbs 1.12 и CMake 1.12
    Отсутствие вменяемой совместимости как у CMake. (1-2 релиза и прощай, пересборка QtC  возможна зачастую только ровно предыдущей версией его же (я о встроенной qbs поддержке)
    Отсутствие коммьюнити, мейл лист достаточно тухлый (по крайней мере был год назад, сейчас я от него отписан)
    Проект пилят полтора человека, не знаю почему Qt Company не выделяет больше ресурсов.

    Сама по себе идея и задумка хорошая, но очень сильно отставание от уходящего поезда CMake...

    ninja предоставляет ничуть не хуже скорости инкрементных сборок. Одна беда - скорость конфигурирования самого cmake (которую обычно приплюсовывают ко времени для сравнения с qbs).
    Если вам надо часто что-то переконфигурировать, а скрипты тяжелые, это беда-печаль. На моем проекте это около полуминуты.

     
     
  • 5.11, sokoloff (??), 11:09, 20/07/2018 [^] [ответить]    [к модератору]  
  • +/
    >Я был и остаюсь Qbs-фаном

    Владимир, можете показать ваш проект который собирается Qbs-ом. Интересно посмотреть на реальный пример. Я сейчас использую cmake. Qbs меня в свое время заинтересовал, но по "игрушечным" примерам из документации я не понял он удобнее будет чем cmake, или нет.

     
  • 5.14, Аноним (14), 14:50, 20/07/2018 [^] [ответить]     [к модератору]  
  • –1 +/
    Мой любимый недостаток - сложность запуска произвольных команд В Qbs для запуск... весь текст скрыт [показать]
     
     
  • 6.15, Владимир (??), 18:01, 20/07/2018 [^] [ответить]    [к модератору]  
  • +/
    Навороченно - да, на счет читабельно там 50/50, в случае мало-мальски сложного скрипта CMake начинает отставать.
    Когда прикручиваешь какой-то сраный def парсер или подобное, да, вымораживает.
    Зато блин в cmake для некоторых кастомных таргетов приходится конфигурить вспомогательные скрипты, а в qbs о таком можно забыть.

    Ну и да, не для "произвольного" когда все-таки, никто не мешает файлы прочитать просто в проперти той же) я так какое-то автоконфигурирование делал безо всяких Probe-ов, они тогда сырые были еще, не слежу как у них сегодня ситуация.


    ну и еще плюс к CMake - в нем просто ОХРЕНИТЕЛЬНАЯ стандартная библиотека. Написано скриптов поддержки фич на кучу разных платформ на все случаи жизни. Мне кажется в текущем виде CppModule.qbs очень плохо будет горизонтально масштабироваться.

     
  • 2.4, Tantrido (?), 05:02, 20/07/2018 [^] [ответить]    [к модератору]  
  • +/
    Уже можно им QtC собрать?
     
     
  • 3.8, Владимир (??), 06:10, 20/07/2018 [^] [ответить]    [к модератору]  
  • +/
    qbs скрипты для QtC есть с версии 2.6, что ли. Так что ответ да - можно. Более того, я свой кастомный плагин только им и собираю, выходит намного быстрее, чем с qmakе  собрать только одну цель.
     
     
  • 4.9, Tantrido (?), 06:14, 20/07/2018 [^] [ответить]    [к модератору]  
  • +/
    > qbs скрипты для QtC есть с версии 2.6, что ли.

    Скрипты то есть, но говорят собрать ими QtC нельзя до сих пор.

     
     
  • 5.16, Владимир (??), 18:01, 20/07/2018 [^] [ответить]    [к модератору]  
  • +/
    Блин, ну раз нельзя, пойду удалю свою сборку тогда, и коллегам скажу чтобы не использовали мои бинарники...
     
  • 5.18, Аноним (1), 21:13, 20/07/2018 [^] [ответить]    [к модератору]  
  • +/
    В блоге кьюта как раз сообщают об обратном
     
     
  • 6.19, Tantrido (?), 21:37, 20/07/2018 [^] [ответить]    [к модератору]  
  • +/
    > В блоге кьюта как раз сообщают об обратном

    Не знаю, у меня не собиралось и кютешники говорили, что не собирается. Это не разработчик ответил.

     
  • 1.10, anonymous (??), 09:00, 20/07/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +3 +/
    >В отличие от qmake, Qbs не привязан к Qt

    В каждой новости копипастят одно и то же. Автор похоже не в курсе, что Qbs требует qtbase и qtdeclarative. А вот qmake можно и без qt собрать. Было бы желание

     
  • 1.12, Sauron (??), 11:39, 20/07/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Научили бы его качать модули из внешнего репозитория таким образом, чтобы он работал на манер cargo, цены бы ему не было. Да и вроде кажется, что это не так уж сложно сделать было бы, но почему-то нет такой задачи, что огорчает.
     
     
  • 2.13, Вареник (?), 12:58, 20/07/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    deb и rpm - по сути и есть репозитории для C/C++ проектов. Мультиплатформенный реп для С++ все равно неподъемная задача.

    Это для других языков самостоятельные мультиплатформенные репы - когда язык обеспечивает должную изоляцию от платформы.

     
  • 2.17, Владимир (??), 18:03, 20/07/2018 [^] [ответить]    [к модератору]  
  • +/
    Ага, а еще распределённую сборку туда впихнуть. И возможность собирать по SSH. И блокчейн.

    p.s. простите за яд, это все правда клёво, но к сожалению там разработчики не справляются и с реализацией того что и так минимум нужно (точнее справляюсь, но крайне со скрипом)

     
     
  • 3.20, edolstra (?), 11:21, 21/07/2018 [^] [ответить]    [к модератору]  
  • +/
    Уже сделали: https://nixos.org/nix/
     
  • 1.21, Аноним (21), 13:12, 22/07/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    А как у него с кроссплатформенностью?
    В частности, можно ли собрать Android APK?
     
  • 1.22, username (??), 23:36, 22/07/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Не понимаю я пользователей этой штуки. Обратной совместимости толком нет, разработка живет в отдельной вселенной. Выше писали про необходимость городить на js банальные вещи.
    Зачем вы пользуетесь этим?
     
  • 1.23, klalafuda (?), 20:50, 23/07/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Ни дай бог на это целиком перейдет Qt6... :-/
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor