The OpenNET Project / Index page

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

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

09.12.2017 10:45

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

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

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

  • Возможность динамического определения профилей, что полезно когда проект имеет заранее известные требования к среде сборки или целевой платформе;
  • Более естественная организация работы с вложенными группами, учитывая префиксы. Если префикс не определён в группе, то его значение берётся из родительской группы;
  • В модулях и файловых метках (FileTagger) появилась возможность установки уровней приоритета, которые могут выступать в роли механизма разрешения конфликтов при необходимости выбора между несколькими разными реализациями одного модуля, соответствующими заданным условиям, или несколькими файловыми метками, указывающими на один и тот же файл. Например, установка приоритетов может оказаться полезной при наличии нескольких вариантов модуля cpp и необходимости активации разных реализаций для разных платформ;
  • Для установки файловых меток на генерируемые ресурсы добавлено новое свойство fileTags, которое можно применять в группах с фильтром fileTagsFilter. Новое свойство позволяет прикреплять дополнительные элементы к списку тегов, созданных правилом из неподконтрольного модуля;
  • Добавлена начальная поддержка платформы UWP (Universal Windows Platform);
  • Добавлена возможность использования команды run для запуска и развёртывания Android-приложений на внешних устройствах, а также запуска и развёртывания приложений iOS и tvOS в симуляторе;
  • Добавлена поддержка компилятора Qt Quick и утилиты qmlcachegen;
  • Добавлен модуль vcs, предоставляющий информацию о репозитории (пока поддерживаются только Git и Subversion);
  • Добавлен модуль cpufeatures для абстрагирования флагов компилятора, связанных с возможностями CPU (например, поддержка инструкций SSE);
  • В интерфейс командной строки добавлена команда list-products для вывода списка имён продуктов, доступных в проекте.


  1. Главная ссылка к новости (http://blog.qt.io/blog/2017/12...)
  2. OpenNews: Выпуск сборочного инструментария qbs 1.8, развиваемого проектом Qt
  3. OpenNews: Релиз системы сборки CMake 3.10
  4. OpenNews: Компания Yahoo открыла код сборочной платформы Screwdriver
  5. OpenNews: Разработчик языка XL опубликовал новую сборочную систему build
  6. OpenNews: Доступна система сборки Meson 0.42, на которую переходят systemd, GTK+ и GNOME
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/47708-qbs
Ключевые слова: qbs, build
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (41) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 11:11, 09/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Ура! Скоро шестокеды!
     
     
  • 2.2, Леонид (??), 12:19, 09/12/2017 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Ура! А то пятые уже почти работают.
     
     
  • 3.3, Аноним (-), 12:23, 09/12/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    2 года уже нормально работают. В kubuntu 16.04 LTS, по крайне мере.
     
  • 3.6, Аноним (-), 13:05, 09/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Собранные из ebuild'ов полностью работают, как это для вас не странно.
     
     
  • 4.9, DiabloPC (ok), 14:51, 09/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ХЗ, у меня и из преобычнейших реп работают.... ЧЯДНТ?
     
     
  • 5.13, Аноним (-), 16:11, 09/12/2017 [^] [^^] [^^^] [ответить]  
  • +7 +/
    - доктор, у меня болит нога, что посоветуете?
    - ХЗ, у меня тоже есть нога, и она не болит... ЧЯДНТ?!
     
     
  • 6.25, Аноним (-), 22:32, 09/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    И вот поэтому я буду всем здоровым говорить, что у них тоже болит нога, а они глупые не верят.
     
  • 6.27, Онаним (?), 08:54, 10/12/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    - доктор, меня ест нога, ЧЯДНТ?!
    - ХЗ, я узбек... RTFM!
     
     
  • 7.36, Аноним (-), 15:10, 11/12/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Когда попытался пошутить, но "как-то не удалось".
     

  • 1.4, anonymous (??), 12:39, 09/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    >В отличие от qmake, Qbs не привязан к Qt и изначально рассчитан на организацию сборки любых проектов

    Вот зачем эту мантру повторять? 1. qbs зависит от Qt; 2. qmake может собрать любой проект.

     
     
  • 2.5, Аноним (-), 13:02, 09/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Догадываюсь, что к моменту полной стабилизации кодовой базы, они добавят урезанный движок QML прямо в сам проект. И можно будет его устанавливать на сервере без Qt-модулей.
     
     
  • 3.7, anonymous (??), 13:09, 09/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Движок QML зависит от QtCore и QtGui. Никто в здравом уме не будет их тащить с собой. А так на сервере собирай хоть сейчас, ничто этому не мешает.
     
     
  • 4.28, Аноним (-), 11:16, 10/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    статическую линковку запретили уже?
     
     
  • 5.29, anonymous (??), 13:48, 10/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Давно с венды слез?
     
  • 2.14, fff (??), 17:06, 09/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    1) Одним qbs-ом можно собрать проект под разные версии Кути
    2) Одним qmake-ом ты можеш собрать только проект с одной конкретной версией Кути
     
     
  • 3.30, anonymous (??), 13:49, 10/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > 1) Одним qbs-ом можно собрать проект под разные версии Кути
    > 2) Одним qmake-ом ты можеш собрать только проект с одной конкретной версией
    > Кути

    Про обратную совместимость не в курсе, конечно.

     

  • 1.8, Дуплик (ok), 14:05, 09/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Зависит от JavaScript'а, QtQuick'а и Qt'а. Ну и зачем такое счастье? Тогда уж проще взять Gradle, тот что на Java. Он как минимум легковеснее и функциональнее.

    И да, QBS точно так же, как make, опирается на дату изменения файла, а не на его хеш/отпечаток. Поэтому наследует проблемы своего предшественника.

    Нисколько не удивительно, что он не вылез из экосистемы Qt'а ни на йоту. Да и в самой экосистеме имеет шаткое положение -- год другой и можно будет выкидывать, как уже выкинули QtScript, QtWebkit.

    Напоминаю, что Qt и хотя бы его примеры так до сих пор и не перевели на QBS, хотя планы были грандиозные.

     
     
  • 2.10, Аноним (-), 15:19, 09/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так к 6 же переведут.

    QtScript выкинули в пользу QtQuick.

    QtWebKit выкинули из-за стагнации в апстриме.

     
     
  • 3.12, Anon999 (ok), 15:54, 09/12/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    На очереди QtWidgets?
     
     
  • 4.20, Аноним (-), 20:47, 09/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Нет. Разработчики сказали что QtQuick предпочтителен в долгосрочной перспективе и все усилия будут направлены на его развитие, чтобы он по возможностям догнал и перегнал QtWidgets. В QtWidgets нельзя по быстрому добавить свистоперделки, появившиеся в Win8 и Android, поэтому решили его (и себя) не калечить и сделать что-то новое. Но программисты вполне могут использовать QtWidgets, который помечен как законченный (доделанный).
     
  • 3.41, name (??), 14:02, 13/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >>QtWebKit выкинули из-за стагнации в апстриме.

    QtWebKit вполне себе развивается, а ядро WebKit - тем более. Просто в Qt нет ресурсов чтобы поддерживать и QtWebKit и QWebEngine (а делают это одни и те же люди), поэтому QtWebKit был удалён.

     
  • 2.40, dontletsmac (?), 10:46, 13/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >тот что на Java. Он как минимум легковеснее

    На Java легковеснее? Видимо, Дуплик зависит от каких-то веществ.

     

  • 1.11, Аноним (-), 15:21, 09/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    To build qbs simply do

    qmake -r qbs.pro
    make

     
  • 1.16, Alex (??), 18:34, 09/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Зачем этот бардак они опять плодят??? неужели трудно взять и юзать cmake и не парится по поводу привязки? Он более гибкий чем этот qmake и более функциональный. Так они еще один бред придумали.
     
     
  • 2.17, Аноним2 (?), 19:14, 09/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Так они все к своему фрэймворку привязывают, чтобы к конкурентам не бежали. Некоторым нравятся комбайны все в одном. Нормальные тактические ходы.
     
     
  • 3.18, Аноним (-), 20:28, 09/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Звучит примерно так: производитель комбайнов выпустил новый набор гаечных ключей, чтобы таким образом привязать фермеров к своему изделию и не дать им перейти к производителям ручных косилок и молотилок. Но по какой-то неведомой причине фермерам нравятся комбайны, а не ручные косилки/молотилки. Это заговор чистой воды.
     
     
  • 4.22, Аноним (-), 21:44, 09/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    производитель комбанов решил перейти со старых вендорлочных гаечных ключей, к которым привыкли, на новые вендорлочные гаечные ключи, к которым страдальцы старого вендорлока опять должны привыкать, а стандартные ключи производитель комбайнов не желает использовать, ибо вендорлок это деньги
     
     
  • 5.24, Аноним (-), 22:13, 09/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Если ключей от газонокосилки не хватает чтобы починить комбайн, то виноват конечно комбайн. Ну а чтобы построить ракету тем более не нужно ничего нового придумывать, вполне должно хватить ключей от газонокосилки, иначе это будет злой вендорлок.
     
  • 2.21, Хренонимус (?), 21:43, 09/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Удобная система сборки - это хорошо.
    CMake, сколь бы ни был популярным, удобным не является.
    Чего стоит только лиспоподобный внутренний язык. JS, что в QML, какой-никакой язык общего назначения.
     
     
  • 3.23, Аноним (-), 22:00, 09/12/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    А зачем в системе сборки нужен язык общего назначения?
     
     
  • 4.26, Хренонимус (?), 00:59, 10/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    А зачем в системе сборки нужен эзотерический язык, который придётся осваивать, вместо того чтобы быстро настроить сценарии сборки, используя привычную логику?
    Это либо должна быть чрезвычайно простая унифицированная система, как pip/go get/cargo, либо нечто расширяемое, но с вменяемым и простым языком.
     
     
  • 5.34, Аноним (-), 13:20, 11/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да затем, что не всем привычна логика JS (или python, или что там ещё сейчас модно в сборочницы пихать), а изучить с нуля простенький DSL намного легче.
     
     
  • 6.43, Аноним (-), 02:23, 20/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > а изучить с нуля простенький DSL намного легче

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

     
  • 5.35, Аноним (-), 13:23, 11/12/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Это либо должна быть чрезвычайно простая унифицированная система, как pip/go get/cargo,

    И что из перечисленного является сборочной системой?

     
  • 3.31, anonymous (??), 13:51, 10/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >CMake, сколь бы ни был популярным, удобным не является.

    Ты просто его не осилил. Он прост, как топор.

     
     
  • 4.37, Дурень (?), 15:16, 11/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Оксюморон же
     

  • 1.32, nc (ok), 15:15, 10/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Хорошо что развивается, это в любом случае лучше чем makefile
    Но если в целом - то зачем вообще нужны сценарии и правила сборки? Описание проекта должно быть ДЕКЛАРАТИВНЫМ, а не представлять собой еще один язык императивного прорграммирования. То есть - список файлов исходников, параметры проекта (начиная от имени и заканчивая опциями оптимизации и кодогенерации), список внешних библиотек... все это по сути своей декларативная информация, то есть json или xml бы тут подошел лучше чем любой язык программирования. Исключения в виде запуска внешних программ для обработки чего-либо в процессе сборки должны оформляться как декларативные ноды специального типа, в которых прописывается внешняя программа и ее аргументы.


     
     
  • 2.38, Аноним (-), 15:27, 11/12/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Так в Qbs так и есть же. И декларативность, и даже json. И исключения в виде запуска внешних программ. Но запуск внешних програм реализован довольно неудобно, по мне так. Так что если у вас нестандартная процедура сборки, требующая запуска многих внешних программ - ИМХО лучше использовать что-то другое, например тот же CMake. А если сборка стандартная - то Qbs удобнее, декларативнее и красивее.
     
     
  • 3.39, Владимир (??), 07:39, 12/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    ну я с вами не соглашусь, я еще в пору qbs 0.6-0.7 сборку на паскале прикручивал. Не могу сказать что это сделать сложнее чем в cmake.
     

  • 1.33, Анонимы (?), 17:26, 10/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Так и не понял, чем им qmake не угодил. И кому этот qbs будет нужен в остальных проектах, при наличии и так не малого зоопарка.
     
     
  • 2.42, name (??), 14:04, 13/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    +1. До сих пор им никто не пользуется. Если кто-то начинает новый проект, то это или cmake или qmake.
     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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