The OpenNET Project / Index page

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

Выпуск сборочного инструментария qbs 1.3.0, развиваемого проектом Qt

26.08.2014 14:44

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

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

В новой версии существенно улучшена интеграция с интегрированной средой разработки Qt Creator. Обеспечена возможность добавления/удаления файлов с исходным кодом в продукты qbs через штатное дерево проекта, по аналогии с работой с проектами на базе qmake. Перезагрузка проекта теперь осуществляется заметно быстрее и выполняется только при наличии реальной необходимости. Например, ускорение заметно в случаях, когда файл был изменён без нарушения семантики (добавлены пробелы). Из изменений в языке сценариев отмечается возможность установки разных профилей для определённых продуктов, например, для генерации разных исполняемых файлов для разных платформ. Проведена работа по снижению потребления памяти во время работы сборочного инструментария.

  1. Главная ссылка к новости (http://blog.qt.digia.com/blog/...)
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/40456-qbs
Ключевые слова: qbs, build, qt
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (26) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Владимир (??), 16:07, 26/08/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Использую qbs в течение двух лет, но не радуют постоянно вылязящие мелкие регрессии...

    например самая последняя версия у меня постоянно (!) собирает один и тот же файл при инкрементальной сборке. Все попытки сделать минимальный проект с глюком провалились. Откат на предыдущую версию конечно помог. Но нужно отдебажить все равно этот факт, чтобы в апстриме поправили...

     
  • 1.2, Аноним (-), 16:25, 26/08/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    щас соберу минусы, но всеравно не понимаю, чем не устраивает cmake. даже boost перетаскивают на cmake. лишняя сущность этот qbs.
     
     
  • 2.3, RazrFalcon (ok), 16:29, 26/08/2014 [^] [^^] [^^^] [ответить]  
  • +7 +/
    У cmake отвратный синтаксис.
     
     
  • 3.13, Аноним (-), 21:13, 26/08/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Замечательный там синтаксис. С одной стороны, он совершенно обычный (функция(аргументы), ${переменная}) вместо скобок он заставляет повторять условие в endif из-за чего читабельность повышается в разы.
     
  • 2.4, Владимир (??), 16:29, 26/08/2014 [^] [^^] [^^^] [ответить]  
  • +4 +/
    JUST ADOPT CMAKE писали в комментариях к релизу qbs 0.3.0.

    Cmake - НЕ система сборки, а генератор makefile-ов. А некоторые вещи средствами make делать довольно геморно (например когда количество порождаемых продуктов динамично). cmake это обычно делает на этапе конфигурирования.

    qbs не содержит в себе этапа генерации файлов. Он сам вызывает все инструменты.

    А еще на этапе исследования систем сборки их синтаксис cmake тоже не устроил)

    Я вообще тоже против "картинка xkcd про 15 стандартов", но qbs подкупил меня именно внятным и легким синтаксисом, который легко поддерживать.

     
     
  • 3.7, dhamp (?), 17:19, 26/08/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >JavaScript
    >внятным и легким синтаксисом

    не для всех js - это внятный синтаксис, хотя базовый правила описанные в документации просты и действительно понятны, в случае если их будет недостаточно придётся городить велосипед на js.

     
  • 3.18, Аноним (-), 06:35, 27/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Cmake умеет генерировать не только Makefile. Есть к примеру выходной формат ninja, которая позволяет собирать проекты гораздо быстрее, хоть и не предназначена для чтения человеком.
     
  • 3.23, vle (ok), 20:50, 28/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > А некоторые вещи средствами make делать довольно геморно
    > (например когда количество порождаемых продуктов динамично).

    Чуть конкретнее можно?

     
  • 3.24, dhamp (?), 15:25, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Cmake - НЕ система сборки, а генератор makefile-ов.

    хм, вот почему все зацикливаются только на makefiles? cmake умеет генерировать не только их.
    >например когда количество порождаемых продуктов динамично

    ниже уже просили привести пример, может стоит всё же продемонстрировать что скрывается за этой фразой.  

     
  • 2.5, Аноним (-), 16:47, 26/08/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    cmake - жуткий монстр. Тонны исходников, собирается адски долго. Зато умеет разноцветно печатать. Наверное, autotools проще понять, хоть они и написаны на адской смеси Perl/m4.
     
     
  • 3.6, Владимир (??), 16:54, 26/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Да бросьте. Qbs тоже не маленький. По сравнению с qmake например (он вообще собирается пока делаешь глоток чая).
    На 4 ядрах у меня чуть ли не минуту собирается (фигня конечно, но легковесным бы не назвал).
     
  • 3.14, Аноним (-), 21:25, 26/08/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Опять безграмотные высосанные из пальца придирки.
    Какая вам разница сколько там исходников? Не вам в них разбираться. На самом-то деле всего в 4 раза больше чем в qbs, что полностью объяснимо в разы более богатой функциональностью.
    Какая вам разница сколько он собирается? Не для каждого же проекта его собирать. На самом-то деле собирается он жалкие 3 минуты. Только QtCore от которого зависит qbs собирается уже столько же.
    А вот по тому какие простые и понятные скрипты на нём пишутся, он уделывает и qbs и тем более autotools (перла в которых нет, позорище).
     
     
  • 4.19, Аноним (-), 06:43, 27/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Да, действительно, Perl в autotools нет. За исключением того, что automake и autoconf - скрипты на Perl. </sarcasm>

    Насчёт сборки - да, действительно быстро собирается, проверил. Был неправ.

     
     
  • 5.21, yet another anonymous (?), 20:08, 27/08/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > ... За исключением того, что automake и autoconf - скрипты на Perl.

    $ file 'which autoconf'
    /usr/bin/autoconf: POSIX shell script, ASCII text executable

    Поздравляю, гражданин соврамши.

     
  • 2.22, Кевин (?), 21:38, 27/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    а как научить дизайнера писать в cmake? в qml он научился писать..
     

  • 1.8, dhamp (?), 17:38, 26/08/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    + ещё 1 возможный камень в огород qbs я думаю сей товарищ просветит раз 2 года использует https://www.opennet.ru/~%F7%CC%C1%C4%C9%CD%

    для того чтобы что-то собрать нужно настоить toolchain в qbs
    при условии что у нас 1 компилятор в системе - ничего плохого нет, просто 1 шаг перед использованием - предварительная настройка, но если нужно использовать более одного компилятора, изволь все их занести в настройки qbs и далее нужно указать что нам нужен именно этот toolchain, прекрасно если qbs запомнит этот выбор для каждой директории с проектом, если нет - это печально.

     
     
  • 2.9, Владимир (??), 17:49, 26/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Не знаю, у меня как у разработчика, много тулчейнов на машине стоит, и я пока не жалуюсь на работу "qbs detect-toolchains" ...
    Один раз настроив окружение, можно собирать много проектов из скриптов сразу же, не нужны предварительные ./configure.

    И да, если его использовать из Qt Creator то естественно все запомнится. Если запускаете с командной строки то да... здесь может быть дискомфорт))

     
     
  • 3.11, dhamp (?), 18:06, 26/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >И да, если его использовать из Qt Creator то естественно все запомнится. Если запускаете >с командной строки то да... здесь может быть дискомфорт))

    для меня это -

    >Не знаю, у меня как у разработчика, много тулчейнов на машине стоит, и я пока не жалуюсь >на работу "qbs detect-toolchains"

    и он найдёт распакованный в хомяке или в /opt компилятор? что-то крайне сомнительно, думается всё равно руками надо будет добавлять.

     
     
  • 4.16, Владимир (??), 05:06, 27/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    очевидно, как и любой конфигурятор - если в PATH прописан, то найдет ;)
     
     
  • 5.25, dhamp (?), 15:27, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > очевидно, как и любой конфигурятор - если в PATH прописан, то найдет
    > ;)

    это просто бессмысленно добавлять всё в PATH

     
  • 2.10, Владимир (??), 17:51, 26/08/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    а вообще как система сборки qbs иделано смотрится только вместе с IDE. под QtC все понятно, а под студию (оффтопик, да), можно использовать генератор проектов который qbs же и запускает.
    https://bugreports.qt-project.org/browse/QBS-31
    вот здесь я в комментах ссылку на патч добавил. можно пользоваться.
     

  • 1.12, Аноним (-), 18:23, 26/08/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Да, до Gradle ему как раком до шанхая...
     
     
  • 2.17, Владимир (??), 05:10, 27/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Посмотрел =) соглашусь с Вами! Возможности автоматического тестирования и сборки пакетов вряд ли когда еще появятся =(((
     
     
  • 3.20, Анан (?), 11:28, 27/08/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вообще перейдя когда стал писать на Java постоянно подмечаю что практически все инструменты и Java технологи впереди планеты всей. Взять тот же Gradle, я ни то что бы аналога не видел для других языков я даже что то отдаленно напоменающее его по функционалу и возможностям не видел.
     
     
  • 4.26, integer (ok), 00:28, 31/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Всему виной энетрпрайзы с их требованиями и эвалюциями. Взять теже логгеры...
    Так а вообще сравнение какое-нибудь gradle(+some plugin) vs qbs есть?
     

  • 1.15, Аноним (-), 21:29, 26/08/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Ради интереса пробовал собрать им свой проект. Пришёл к выводу что с cmake он даже близко не стоял - попахивает scons'ятиной которая не сборочная система, а фреймворк для написания оных, в результате через скрипты представляют собой мешанину условий и вспомогательных функций для простейших вещей. Тут то же самое, но по возможностям она, похоже, ещё сильнее ограничена. В то же время CMake всё делает сам и скрипт представляет собой именно то что должен - перечисление опций, исходников, зависомостей и целей.
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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