The OpenNET Project / Index page

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

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

07.11.2013 11:23

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

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

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

  • Поддержка вложенных проектов и возможность встраивания одного проекта в другой;
  • Существенно расширены средства отслеживания изменений. Учтены дополнительные факторы, которые могут потребовать пересборки частей проекта или, наоборот, сигнализируют об отсутствии необходимости пересборки.
  • Улучшены средства диагностики ошибок, таких как синтаксические ошибки в файлах проекта и отсутствие необходимых сведений в профиле. Увеличена информативность сообщений об ошибках;
  • API расширен для предоставления большей информации в интегрированную среду разработки, что позволило улучшить поддержку qbs-проектов в грядущем выпуске Qt Creator 3.0;
  • Добавлена большая порция новой документации, устранены белые пятна в описании языка определения параметров проекта.
  • В состав включён графический интерфейс для редактирования профиля проекта и изменения настроек.


  1. Главная ссылка к новости (http://blog.qt.digia.com/blog/...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/38361-qbs
Ключевые слова: qbs, qt, build
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (47) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, ILoveMicrosoft (ok), 11:41, 07/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Я рад! Потому что autotools - засохшее мамонта, cmake - тоже отвратен, хотя признаю что cmake штука мощная. Но всё же, планирую сесть на QBS.
     
     
  • 2.3, YetAnotherAnonym (?), 11:55, 07/11/2013 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Но всё же планирую подсесть на QBS.
    /fixed
    Можешь не благодарить :-)
     
  • 2.11, glebiao (ok), 15:27, 07/11/2013 [^] [^^] [^^^] [ответить]  
  • –3 +/
    А я не рад.
    До scons'а это не дотягивает. Лучше бы улучшили поддержку qt-шностей в сконсе, ей-богу.
     
     
  • 3.23, ip1981 (ok), 19:26, 07/11/2013 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > А я не рад.
    > До scons'а это не дотягивает. Лучше бы улучшили поддержку qt-шностей в сконсе,
    > ей-богу.

    https://wiki.debian.org/UpstreamGuide

    Please don't use SCons. It is hard to use it correctly. For instance SCons is designed to ignore environment variables such as CFLAGS (unless your add code for this). It also does not support DESTDIR out of the box. As an upstream you have to explicitly add code for that (or Debian has to patch). Support for SONAMEs (library versioning) is also absent. The general observation is that many projects, that use SCons, do not have a working install target. Since projects work around these limitations individually there is no way to just use a SCons project in Debian, but more work is required to invoke it correctly.

    The gentoo wiki has a detailed list of shortcomings.

    If you choose to use SCons anyway, please ensure that the usual environment compiler variables (CC, CFLAGS, ...) and path variables (DESTDIR, BINDIR, LIBDIR, ...) are honoured. There is a recipe, that addresses some of these.

     
     
  • 4.34, glebiao (ok), 13:48, 08/11/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Уфф. Вот какая штука. Мантейнерам большого репозитория, без сомнений, удобно, когда сборочная среда единообразно вписывается в их окружение. А насколько корректно при этом работает сама сборочная среда, их уже не волнует: главное, чтобы корректно собирался конечный результат.

    А вот если вы разработчик, ситуация обратная: вы можете быть совершенно равнодушны к тому, как ваша среда реагирует на стандартные переменные окружения, но будете огорчены, если зависимости в проекте отслеживаются не вполне. Вот с последним, как раз, сконс справляется лучше всех.

    И да, в моих SConscript, переменные окружения поддерживаются, это вообще не проблема.

    Кстати, не я н понял пассаж насчёт DESTDIR. Корректная(!) сборка проекта в отдельный buildir, это вообще исконная фишка сконса.

    Порог вхождения в сконс (в случае не очень простых проектов) высоковат, это да. И забывается быстро. С нуля, сложный SConscript/SConstruct я сейчас сходу, "с чистого листа и без бумажки" не напишу, пожалуй. Не волнует: есть наработанный шаблон.

     
     
  • 5.36, yekm (ok), 19:09, 08/11/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Видел я пару проектов на этом вашем сконсе. Количество костылей не оправдывает гибкости. Практически во всех случаях можно было просто доосилить cmake.
     
     
  • 6.42, glebiao (ok), 07:31, 11/11/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    можно подробнее насчёт костылей?

    PS: про cmake, лучше не надо. Теряет зависимости, требует перезапуска после изменения состава исходников.

     
     
  • 7.44, Аноним (-), 08:41, 11/11/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > можно подробнее насчёт костылей?

    Вон там выше написано достаточно для того чтобы не пользовться этим гомном. Если оно кладет на переменные окружения - должно помереть лютой смертью.

     
  • 6.43, Аноним (-), 08:40, 11/11/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    который тоже кривая и глючная хрень, так что можно было не выделываться и доо... большой текст свёрнут, показать
     
  • 2.22, ip1981 (ok), 19:25, 07/11/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    http://postimg.org/image/8uw5xoj8h/
     
     
  • 3.29, nib (?), 01:31, 08/11/2013 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Зачет за автотулз, у вас отдельный штат кодеров пишет билд скрипты?;)
     
     
  • 4.32, ip1981 (ok), 11:35, 08/11/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > отдельный штат кодеров пишет билд скрипты?

    А вы специалист по циклу for?

     
  • 2.46, Аноним (-), 08:48, 11/11/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Я рад! Потому что autotools - засохшее мамонта, cmake - тоже отвратен,
    > хотя признаю что cmake штука мощная. Но всё же, планирую сесть на QBS.

    Ну да, с твоим ником как-то так и надо, страдать легким программизмом в своей вьюжлстудии. При этом пальцем у виска будут крутить и *никсоиды, и вeндyзятники.

     

  • 1.2, Владимир (??), 11:54, 07/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Использую уже год, отличная система, собирает шустро и удобно. Очень хорошо поддерживать кучу разных аппаратных платформ и кастомных компиляторов.
    (libc-linux-x86, x86_64, armlinux-elf, arm-uclinux, mingw).
    Использование что qmake, что netbeans-овых конфигов было болью.

    Кроме того прикрутил сборку паскальных проектов через него же. все удобно.

     
     
  • 2.28, qwerty (??), 00:46, 08/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Использую уже год,

    Главное не время, а количество проектов и поддерживаемых платформ.

     
     
  • 3.30, Владимир (??), 02:19, 08/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Платформы - написал. Количество проектов - 3 - в каждом около десятка подпроектов (статические и динамические либы и приложения).

    Кто-то скажет - мало, а по мне так вполне боевое крещение. QBS мал и юн, но уже может конкурировать по некоторым показателям (для меня критично - удобство конфигов и их поддержка).

     
     
  • 4.37, да (?), 23:13, 08/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    т.е. компилятор - 1.
     

  • 1.4, Аноним (-), 12:39, 07/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что не нравится - Запуск внешних програм опять через одно место.
    Если мне нужно простейшее - собрать, если удачено загрузить на сайт по фтп, если не удачно - послать письмо и откатить на прошлую версию из гита. В make файле это три строки, тут надо импортировать модули, и на javascript писать портянку с калбеками.
     
     
  • 2.27, Аноним (-), 22:02, 07/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > собрать, если удачено загрузить на сайт по фтп, если не удачно - послать письмо и откатить на прошлую версию из гита

    Система сборки должна собирать, а не кофе варить и тапочки приносить. Пускай лучше делает одну вещь, но хорошо.

    > В make файле это три строки

    Дык и напиши себе мейкфайл из трёх строк. Для самой сборки он будет вызывать qbs. В чём бида-то?

     
     
  • 3.47, Аноним (-), 08:49, 11/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Система сборки должна собирать, а не кофе варить и тапочки приносить. Пускай
    > лучше делает одну вещь, но хорошо.

    Как бы было неплохо если оно не только собрать программу может но и оформить это в нечто готовое. А вот тут уже может понадобиться вызов внешних программ.

     

  • 1.5, svlasov (ok), 13:09, 07/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Уже научился собирать в директориях отличных от buid?
     
     
  • 2.26, svlasov (ok), 21:13, 07/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    И на багтрекере слили, и тут сливают.

    https://bugreports.qt-project.org/browse/QBS-116

    >> гибкие правила сборки

    на то они и гибкие

     
     
  • 3.31, Владимир (??), 02:21, 08/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    с абсолютными путями у меня работает норм. Для цели "положить бинари  в ../bin после сборки" есть команда install.
     

  • 1.6, Аноним (-), 13:24, 07/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Тьху, и тут JavaScript...
     
  • 1.7, Аноним (-), 13:42, 07/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Попробовал, до cmake даже близко не дотягивает. Какой-то передутый qmake с жабоскриптом, сохранивший все генетические проблемы.
     
     
  • 2.8, qqqq (ok), 14:38, 07/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    хотелось бы конкретики
     
  • 2.17, Xasd (ok), 17:57, 07/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Какой-то передутый qmake с жабоскриптом

    так как в этой теме есть специалисты -- то заодно и спрошу..:

    подскажите пожалуйста -- как на qmake воссоздать аналог следующей qbs-декларации:




        cpp.warningLevel: "all"
        cpp.treatWarningsAsErrors: true


    ???

    (разумеется для случая разных C++компиляторов, а не только для GCC)

     
     
  • 3.24, ip1981 (ok), 19:32, 07/11/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > подскажите пожалуйста -- как на qmake воссоздать аналог следующей qbs-декларации:
    >


    >     cpp.warningLevel: "all"
    >     cpp.treatWarningsAsErrors: true
    >


    > ???
    > (разумеется для случая разных C++компиляторов, а не только для GCC)

    Не надо это прибивать гвоздями. Есть же CFLAGS, CXXFLAGS.

    Но если очень хочется, есть http://stackoverflow.com/a/19661046/933161

     
     
  • 4.25, Xasd (ok), 19:57, 07/11/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
     
     
  • 3.38, да (?), 23:17, 08/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >> Какой-то передутый qmake с жабоскриптом
    > так как в этой теме есть специалисты -- то заодно и спрошу..:
    > подскажите пожалуйста -- как на qmake воссоздать аналог следующей qbs-декларации:
    >


    >     cpp.warningLevel: "all"
    >     cpp.treatWarningsAsErrors: true
    >


    > ???
    > (разумеется для случая разных C++компиляторов, а не только для GCC)

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

     

  • 1.9, Аноним (-), 14:49, 07/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Чем это лучше cmake?
     
     
  • 2.10, Аноним (-), 15:25, 07/11/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Я бы спросил, чем одна фигня отличается от другой? Скачиваешь программу, которая распространяется лишь через исходники, а там нужен cmake, ...или qmake,  ...или ещё какой-нить. К чему переходить на странные штуки из зоопарка, когда есть make?
     
     
  • 3.13, blablabla2 (?), 16:28, 07/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Я бы спросил, чем одна фигня отличается от другой? Скачиваешь программу, которая
    > распространяется лишь через исходники, а там нужен cmake, ...или qmake,  
    > ...или ещё какой-нить. К чему переходить на странные штуки из зоопарка,
    > когда есть make?

    если хватает мозга выкачать исходники, то хватит мозга и qbs,cmake,etc выкачать. gcc и make уже по умолчанию во всех дистрибутивах поставляются при установке голой системы?

     
  • 3.18, Аноним (-), 18:00, 07/11/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Скачиваешь программу, которая распространяется лишь через исходники, а там нужен cmake, ...или qmake,  ...или ещё какой-нить.
    > К чему переходить на странные штуки из зоопарка, когда есть make?

    А что, make значит не нужен? А то что компилятор нужен, не смущает?

    А вообще, make что-то сложнее hello world не соберёт, ибо не умеет искать зависимости и абстрагироваться от особенностей систем. Даже для hello world нормальный Makefile написать - для некоторых непосильная задача. cmake же всё делает для разработчика, и, на секунду, умеет генерить не только makefile но и проекты для ide.

     
     
  • 4.20, ZloySergant (ok), 18:24, 07/11/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >А вообще, make что-то сложнее hello world не соберёт...

    Зае**сь, hello world на 72 метра в архиве. kernel.org , если чо.

     
     
  • 5.21, Аноним (-), 18:56, 07/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Ну посмотрите ради интереса объём кода их makefile'ов, откуда они получаются и сколько там есть дополнительных утилит. И да, ядро - проект без зависимостей, в этом смысле любоя вшивая пркладуха намного его сложнее.
     
  • 5.33, ip1981 (ok), 11:38, 08/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >>А вообще, make что-то сложнее hello world не соберёт...
    > Зае**сь, hello world на 72 метра в архиве. kernel.org , если чо.

    kernel is special. Это проект в себе. Без внешних зависимостей.

     
     
  • 6.39, да (?), 23:19, 08/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >>>А вообще, make что-то сложнее hello world не соберёт...
    >> Зае**сь, hello world на 72 метра в архиве. kernel.org , если чо.
    > kernel is special. Это проект в себе. Без внешних зависимостей.

    андроид.

     
     
  • 7.48, Аноним (-), 08:50, 11/11/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > андроид.

    Что - андроид? Кернел собирается без всяких ведроидов.

     
     
  • 8.49, Герберт Уэллс (?), 12:33, 11/11/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Андроид и ядро линукс проекты уровня хелло ворлд ... текст свёрнут, показать
     
  • 5.35, Пиу (ok), 17:21, 08/11/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    там проблема в том, что на самом деле билд-система уровня autotools/cmake/whatever переписана на makefiles. Линусу виднее, но лично я не хочу писать к своим проектам еще и свою билд-систему
     
     
  • 6.40, ip1981 (ok), 23:53, 08/11/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Проблема в том, что вы не понимаете чем сборка ядра отличается от сборки user-space.

    Все autotools, cmake и остальные существуют для облегчения создания исполняемых файлов, библиотек (shared и static) и модулей (которые dlopen) с учётом зоопарка стандартов, заголовочных файлов и других библиотек.

    Для ядра это просто не нужно. Хотя nvidia могла бы...

     
     
  • 7.45, Аноним (-), 08:47, 11/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Хотя nvidia могла бы...

    ...прикупить вазелин :P.

     
  • 2.12, Non Any Mouse (?), 16:01, 07/11/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это лучше тем, что моднее
     
     
  • 3.14, Аноним (-), 17:07, 07/11/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И молодёжнее, ага. Жабоскрипт же
     
     
  • 4.16, qqqq (ok), 17:39, 07/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Канечно, жабоскрипт это вам не гуиле какой-то.
     

  • 1.41, Аноним (-), 15:06, 10/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Лучше бы сделали генерацию ninja, а так ...
     

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



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

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