The OpenNET Project / Index page

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

29.05.2017 20:17  Выпуск сборочного инструментария qbs 1.8, развиваемого проектом Qt

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

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

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

  • Добавлена начальная поддержка сборки приложений для ОС QNX. Поддерживаются следующие версии QNX SDK: SDP 6.5, SDP 6.6 и SDP 7.0;
  • Обеспечена официальная поддержка сборки приложений для FreeBSD. Несмотря на то, что возможность сборки для FreeBSD была доступна изначально, ОС FreeBSD не была отмечена как целевая платформа. В новой версии проекты для которых указана платформа FreeBSD могут быть собраны без дополнительной настройки сборочного окружения;
  • Улучшено обеспечение процесса сборки для Android, например, добавлена возможность использования Qbs при сборке для Android из среды разработки Qt Creator и учёта зависимостей для модулей Qt;
  • Добавлен новый синтаксис "product.modulename.propertyname" для доступа к свойствам модулей из расширений на JavaScript. Например, вместо product.moduleProperty("cpp", "compilerFlags") теперь можно указать product.cpp.compilerFlags.
  • Реализована поддержка свойств, доступных только для чтения. Попытка изменения значения свойств, которые определены с модификатором readonly, приведёт к генерации ошибки;
  • Элементы Probe теперь допустимы в элементах Project, что позволяет логически структурировать проверки, не зависящие от контекста конкретного продукта;
  • Функции loadFile() и loadExtension() заменены на вызов require() и будут объявлены устаревшими в одном из следующих выпусков;
  • Обеспечена возможность запуска Qbs без профиля, реализуя новую стратегию сборки, основанную на автоматической настройке и проверках, вместо применения заранее определённых профилей. Например, запуск qbs из командной строки в случае отсутствия профиля по умолчанию или указании "profile:none" теперь автоматически выполнит сборку для текущей архитектуры, используя оптимальный инструментарий;
  • Добавлена новая утилита qbs-create-project для автоматической генерации файлов с параметрами проекта на основе имеющейся структуры каталогов;
  • В qbs-setup-toolchains добавлена поддержка Visual C++ Build Tools;
  • В сообщениях об ошибках улучшен вывод информации о строке и позиции, в которой допущена ошибка;
  • В PkgConfigProbe предоставлен высокоуровневый API для разбора флагов компилятора и компоновщика, выводимых pkg-config;
  • Обеспечена возможность сборки qbs со статическим связыванием;
  • Изменения нарушающие совместимость: В свойстве cpp.linkerFlags прекращена обработка экранированных значений. Все файлы, входящие в набор (bundle) на платформах Apple, теперь помечаются как bundle.content. Базовая директория для исходных файлов теперь указывает на родительский каталог файла, в котором размещён этот файл, а не базовую директорию исходных текстов продукта.


  1. Главная ссылка к новости (http://blog.qt.io/blog/2017/05...)
  2. OpenNews: Разработчики из компании Google открыли код системы сборки Ninja
  3. OpenNews: Twitter представил первый значительный выпуск системы сборки Pants
  4. OpenNews: Для GNOME-приложений представлена новая экспериментальная система сборки BuilDj
  5. OpenNews: Первый публичный выпуск сборочного инструментария build2
  6. OpenNews: Компания Google развивает новую открытую систему сборки Bazel
Лицензия: CC-BY
Тип: Программы
Ключевые слова: qbs, build
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, nc, 22:20, 29/05/2017 [ответить] [смотреть все]
  • +2 +/
    Опробовать его что-ли для нового проекта... Штука-то явно хорошая.
     
     
  • 2.3, A.Stahl, 22:28, 29/05/2017 [^] [ответить] [смотреть все] [показать ветку]
  • +2 +/
    Технически, может, и не плохо, но не факт что этим приятно будет пользоваться У... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.4, Аноним, 22:31, 29/05/2017 [^] [ответить] [смотреть все]  
  • +6 +/
    JS != вебятина, хотя да, JS это вебятина, а вот ECMAScript(JS без браузерного апи), который скорее-всего и имелся в виду - это скриптовой язык, такой же как Lua и остальные
     
     
  • 4.6, anonymous, 22:49, 29/05/2017 [^] [ответить] [смотреть все]  
  • +/
    >такой же как Lua

    Жирноват он.

     
     
  • 5.7, Аноним, 22:50, 29/05/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Ну это уже от реализации зависит
     
     
  • 6.9, anonymous, 23:01, 29/05/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    > Ну это уже от реализации зависит

    Можно подумать, там есть выбор.

     
  • 3.13, Аноним, 23:18, 29/05/2017 [^] [ответить] [смотреть все]  
  • +4 +/
    У JS хотя бы синтаксис похож на сишный, в отличие от того безобразия, что в cmak... весь текст скрыт [показать]
     
     
  • 4.18, anonymous, 23:58, 29/05/2017 [^] [ответить] [смотреть все]  
  • –4 +/
    Это в каком же месте он похож ... весь текст скрыт [показать]
     
     
  • 5.24, НяшМяш, 00:32, 30/05/2017 [^] [ответить] [смотреть все]  
  • +9 +/
    Эээ, фигурные скобочки - есть, разделитель ; - есть, большинство синтаксических конструкций - тоже. Во всяком случае, сишнику куда проще читать ябыскрипт, чем какой-нибудь упрт пайтон.
     
     
  • 6.30, anonymous, 09:38, 30/05/2017 [^] [ответить] [смотреть все]  
  • –5 +/
    А что не так с пайтоном Вот честно, не понимаю твоих трудностей ... весь текст скрыт [показать]
     
     
  • 7.36, Аноним, 10:54, 30/05/2017 [^] [ответить] [смотреть все]  
  • +/
    не выйдет не читая ничего что-то напрограммить, а в js можно попробовать воткнут... весь текст скрыт [показать]
     
  • 3.25, Отражение луны, 00:43, 30/05/2017 [^] [ответить] [смотреть все]  
  • –2 +/
    > вебятина

    Вернул 2007й?

     
  • 2.47, Grammar Narziss, 16:53, 30/05/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    «что ли», Буратино
     
  • 1.2, Аноним, 22:26, 29/05/2017 [ответить] [смотреть все]  
  • –2 +/
    > JavaScript

    Triggered

     
  • 1.5, Not Secure, 22:33, 29/05/2017 [ответить] [смотреть все]  
  • –1 +/
    меня и CMake вполне устраивает
     
     
  • 2.8, anonymous, 22:50, 29/05/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    А какая разница Всё равно в Qt6 его будут тащить ... весь текст скрыт [показать] [показать ветку]
     
  • 2.15, Tat, 23:32, 29/05/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    CMake никуда убирать не планируют Более того, наоборот, планирует увеличивать е... весь текст скрыт [показать] [показать ветку]
     
  • 1.10, Аноним, 23:08, 29/05/2017 [ответить] [смотреть все]  
  • +/
    Ну наконец-то они это озвучили А то пилят, а сами qmake используют Отсюда сомн... весь текст скрыт [показать]
     
     
  • 2.12, anonymous, 23:13, 29/05/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    А что тут сомневаться Фанбои жаваскрипта там окопались Они так JS и в QtCore п... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.35, фтттт, 09:54, 30/05/2017 [^] [ответить] [смотреть все]  
  • +/
    ты предпочитаеш Guile ?
     
  • 3.45, Вареник, 16:34, 30/05/2017 [^] [ответить] [смотреть все]  
  • +/
    Как угробить лучшую С библиотеку и заставить С жрать больше C , Java и Pytho... весь текст скрыт [показать]
     
     
  • 4.48, K.O., 17:28, 30/05/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Вот не понимаю как система сборки может заставить С жрать больше C А как ж... весь текст скрыт [показать]
     
  • 1.11, anonymous, 23:12, 29/05/2017 [ответить] [смотреть все]  
  • –2 +/
    В зависимостях QtCore и QtScript. Да оно пожирнее cmake выходит. Опять какой-то умник решил за всех.
     
  • 1.14, anonymous, 23:29, 29/05/2017 [ответить] [смотреть все]  
  • +/
    >В отличие от qmake, qbs не привязан к Qt

    Хм...

    $ cd qbs-src-1.8.0
    $ find . -type f -name *.cpp | xargs cat | grep QString | wc -l

    4316

     
     
  • 2.17, Чебурашка, 23:58, 29/05/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Умник штoле Он не привязан к Qt в том смысле, что поддержка Qt там сделана сред... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.20, anonymous, 00:03, 30/05/2017 [^] [ответить] [смотреть все]  
  • +4 +/
    Чего там у тебя прибито ldd opt qt58 bin qmake linux-gate so 1 0xb77cf... весь текст скрыт [показать]
     
     
  • 4.37, Аноним, 11:35, 30/05/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Прибито, просто в QMake и прочих Qt-шных сборочных утилитах moc, rcc, uic и т п... весь текст скрыт [показать]
     
  • 3.42, Аноним, 13:29, 30/05/2017 [^] [ответить] [смотреть все]  
  • +/
    В qmake поддержка Qt тоже сделана через .prf файлы
     
  • 3.51, Аноним, 13:47, 31/05/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    А что в плюсах своих строк нету?
     
  • 2.22, trolleybus, 00:10, 30/05/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    Не привязана к Qt - это значит может быть использована для не-Qt проектов Т... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.23, anonymous, 00:14, 30/05/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Ставить Qt для сборки проекта без Qt Какое-то бредовое применение ... весь текст скрыт [показать]
     
     
  • 4.26, chig00, 04:43, 30/05/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Ставить надо только библиотеки Qt, они и так в 95 случаев стоят на десктопах, д... весь текст скрыт [показать]
     
     
  • 5.32, anonymous, 09:43, 30/05/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Я тебе открою секрет Сборка может быть произведена не только на десктопах ... весь текст скрыт [показать]
     
     
  • 6.34, фтттт, 09:51, 30/05/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Я тебе открою секрет, Qt есть не только на десктопах
     
     
  • 7.39, Аноним, 12:20, 30/05/2017 [^] [ответить] [смотреть все]  
  • +/
    Только вот он нафиг не нужен на сервере.
     
     
  • 8.40, A.Stahl, 12:36, 30/05/2017 [^] [ответить] [смотреть все]  
  • +2 +/
    Qt, внезапно, это не только окошки Но тулкитофобы обычно такими мелочами не и... весь текст скрыт [показать]
     
     
  • 9.41, Аноним, 13:06, 30/05/2017 [^] [ответить] [смотреть все]  
  • +/
    Я не тулкитофоб, но найди мне хоть одну серверную софтину на Qt Web-сервер, там... весь текст скрыт [показать]
     
  • 4.28, Аноним_oyc, 09:28, 30/05/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Только qtcore, как сказали выше Не нужно ставить все части, Qt 5 хорошо порезан... весь текст скрыт [показать]
     
     
  • 5.33, anonymous, 09:45, 30/05/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Про QtScript ты специально умалчиваешь И интересно, где там отдельный тарбол д... весь текст скрыт [показать]
     
     
  • 6.44, VladSh, 16:13, 30/05/2017 [^] [ответить] [смотреть все]  
  • +/
    Qt Script deprecated in Qt 5.5.
     
  • 3.27, Аноним, 09:14, 30/05/2017 [^] [ответить] [смотреть все]  
  • +/
    Внезапно, qmake тоже можно использовать для сборки проектов, не зависящих от Qt ... весь текст скрыт [показать]
     
  • 1.16, Чебурашка, 23:49, 29/05/2017 [ответить] [смотреть все]  
  • +2 +/
    Хорошая штука на самом деле
    Перевели на работе на него два небольших Qt-шных проекта c богомерзкого CMake, пока всем нравится
    Из плюсов: человекочитаемые билд скрипты, простой как топор - полноценно начать юзать можно за вечер, qt и android из коробки, нормальная система профилей вместо костыльных тулчейнов в cmake.
    Минусы: доки хромают, готовься читать исходники; не хватает некоторых фич (например нет аналога cmake-овских FindXXX, только pkgconfig probe или указывать флаги руками если винда); пару раз были глюки с генератором проектов для msvc.
    На небольших проектах (~15kloc) по скорости сильной разницы с CMake + Makefiles не было замечено
     
     
  • 2.38, Аноним, 11:42, 30/05/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    А с CMake Ninja Гененрируемые CMake-ом мейкфайлы -- это треш и угар с хитрой ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.43, Владимир, 15:53, 30/05/2017 [^] [ответить] [смотреть все]  
  • –2 +/
    А с нинзя фанбои qbs обычно не сравнивают, всегда с богомерзким make. Ninja рвет просто qbs в инкрементных билдах - поэтому лично я от него отказался. На мелких проектах меньше 100к SLOC, да, QBS можно поюзать.
     
  • 1.19, anonymous yet another, 00:02, 30/05/2017 [ответить] [смотреть все]  
  • +/
    > Добавлена начальная поддержка сборки приложений для ОС QNX.

    ...
    > Обеспечена официальная поддержка сборки приложений для FreeBSD.

    Похоже, можно только то, что "предусмотрели" авторы. Ну и JavaScript умиляет.

     
     
  • 2.21, anonymous, 00:04, 30/05/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    >> Добавлена начальная поддержка сборки приложений для ОС QNX.
    > ...
    >> Обеспечена официальная поддержка сборки приложений для FreeBSD.
    > Похоже, можно только то, что "предусмотрели" авторы. Ну и JavaScript умиляет.

    Если бы один только жаваскрипт...

     
  • 2.29, Аноним_oyc, 09:32, 30/05/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    JavaScript там без веба.

    PS Ну были бы там Python, Ruby, сильно быстрее было бы?

     
     
  • 3.46, Вареник, 16:39, 30/05/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    > JavaScript там без веба.
    > PS Ну были бы там Python, Ruby, сильно быстрее было бы?

    Было бы не так богомерзко.

     
  • 2.31, фтттт, 09:42, 30/05/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    >>Похоже, можно только то, что "предусмотрели" авторы. Ну и JavaScript умиляет.

    Ты не прав, и прав ;) !111
    Авторы предусмотрели возможность написания своих модулей.

     
  • 1.49, Аноним, 18:45, 30/05/2017 [ответить] [смотреть все]  
  • –1 +/
    А как у него с поиском зависимостей? т.е. как устроен поиск сторонних библиотек
     
     
  • 2.50, фтттт, 08:02, 31/05/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Там есть такая фигня как Probe - http://doc.qt.io/qbs/probe-item.html
    Ты ее конфигурируеш, пишеш на javascript что и где искать.
    Есть небольшой набор проб в поставке - http://code.qt.io/cgit/qt-labs/qbs.git/tree/share/qbs/imports/qbs/Probes

    Конкретно для библиотек - http://code.qt.io/cgit/qt-labs/qbs.git/tree/share/qbs/imports/qbs/Probes/PkgC - запускает pkg-config, парсит его вывод.

    Второй вариант, если один из подпроектов зависит от другого подпроекта - то зависимость указывается через Depends - http://doc.qt.io/qbs/depends-item.html

     

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


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