The OpenNET Project / Index page

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

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

29.03.2018 17:44

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

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

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

  • В дополнение к свойствам qbs.targetOS и qbs.toolchain, в которых используются списки, предложены аналогичные скалярные свойства qbs.targetPlatform и qbs.toolchainType, которые проще использовать для задания целевой платформы из командной строки и в профилях;
  • В модулях обеспечена возможность определения собственных настроек целевых платформ при помощи нового свойства filesAreTargets для элемента Group;
  • В дополнение к TextFile добавлен сервис BinaryFile для чтения и записи бинарных файлов;
  • Добавлено свойство cpp.rpathOrigin, через которое можно получить значение @loader_path в Darwin и $ORIGIN в других Unix-подобных платформах;
  • Добавлено свойство cpp.driverLinkerFlags, предоставляющее возможность определения флагов, которые будут переданы фронтэнду компилятора только при компоновке.
  • В качестве версии языка С++ (cpp.cxxLanguageVersion) теперь можно указывать значение "c++17";
  • Механизм автоопределения GCC-подобных компиляторов теперь учитывает типовые для MinGW префиксы (т.е. корректно определяет файлы типа i686-w64-mingw32-gcc);
  • Для задания имён файлов конфигурации предложен новый ключ "config" и возможность передавать аргументы в форме "ключ:значение". Например для сборки проекта для двух конфигураций debug и release можно запустить "qbs config:debug config:release";
  • Функциональность "run", используемая в одноимённой команде, теперь учитывает необходимые для заданного исполняемого файла библиотеки и добавляет пути к ним в переменные окружения (LD_LIBRARY_PATH в Unix, DYLD_LIBRARY_PATH/DYLD_FRAMEWORK_PATH в macOS и PATH в Windows).


  1. Главная ссылка к новости (http://blog.qt.io/blog/2018/03...)
  2. OpenNews: Разработчик языка XL опубликовал новую сборочную систему build
  3. OpenNews: Доступен сборочный инструментарий Qbs 1.10, развиваемый проектом Qt
  4. OpenNews: Компания Yahoo открыла код сборочной платформы Screwdriver
  5. OpenNews: Первый публичный выпуск сборочного инструментария build2
  6. OpenNews: Компания Microsoft открыла исходные тексты сборочной платформы MSBuild
Лицензия: CC-BY
Тип: Программы
Ключевые слова: qbs, build
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (51) Ajax | 1 уровень | Линейный | Раскрыть всё | RSS
  • 1.1, A.Stahl (ok), 18:16, 29/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >QML, JavaScript

    Э-х-х-х... Ну и хрен с ними. Может хоть веб-программисты порадуются.

     
     
  • 2.3, Аноним (-), 18:35, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Все лучше, чем в cmake
    ... и эти еще CMakeShitLists.txt
    if() else() endif()
    add_executable и add_library вместо просто executable и library
    уже на что угодно согласен, только бы не это!

    и QBS хотя бы декларативный...!

    дальше еще сам не смотрел... только что сам внезапно о нем узнал... боюсь сглазить...

     
     
  • 3.4, Аноним (-), 18:39, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Неужели QML еще и case-sensitive?!!!
    Боюсь даже выяснять!
     
     
  • 4.5, Аноним (-), 18:44, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +6 +/
    может хоть на этот-то раз тулзы для C-подобных языков сделали не любители Паскаля и Бейсика...
     
     
  • 5.42, Аноним (-), 11:56, 01/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Неужели QML еще и case-sensitive?!!!
    > Боюсь даже выяснять!

    Вы все не поняли - эти все три сообщения написал я (один и тот же Аноним).
    Про case-sensitive - это я так выразил свою радость, типа что аж не верится, после мучений с CMake.
    Да, слегка противоречиво получилось, но это исключительно от радости (честно), сижу тут изучаю QML...

    Судя по тому, как на это прореагировали, многие мою радость разделяют. :)))

     
  • 5.43, Анонимный аноним (?), 14:14, 01/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > может хоть на этот-то раз тулзы для C-подобных языков сделали не любители Паскаля и Бейсика...

    Поставить Паскаль в один ряд с васиками *рукалицо*


     
     
  • 6.44, Аноним (-), 14:19, 01/04/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> может хоть на этот-то раз тулзы для C-подобных языков сделали не любители Паскаля и Бейсика...
    > Поставить Паскаль в один ряд с васиками *рукалицо*

    *рукалицо* хотя бы знает, что конъюнкция ("и") и "в один ряд" - это никак не одно и то же

    и если Паскаль не в одном ряду с "васиками", то от этого он не становится в один ряд с "С-подобными" - *рукалицо* это тоже знает в отличии от


     
     
  • 7.45, Анонимный аноним (?), 15:11, 01/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > *рукалицо* хотя бы знает, что конъюнкция ("и") и "в один ряд" - это никак не одно и то же
    > *рукалицо* это тоже знает/,/ в отличи/е/ от  

    Не очень убедительный перевод стрелок *рукалицо*

     
     
  • 8.47, Аноним (-), 15:23, 02/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А зачем стараться и убедительно переводить, если сам вброс был неубедительным ... текст свёрнут, показать
     
  • 4.7, Аноним (-), 19:38, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Неужели QML еще и case-sensitive?!!!

    Например, если речь об этом,  переменные openNet и opennet – совершенно разные, и это здорово
    А вот компоненты могут начинаться только с большой буквы, и переменные НЕ могут (логично)

     
  • 4.9, Аноним (9), 20:26, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Неужели QML еще и case-sensitive?!!!
    > Боюсь даже выяснять!

    Вы с винды что ли пришли или чему вы удивляетесь?

     
  • 4.17, Аноним (-), 21:08, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >Неужели QML еще и case-sensitive?!!!

    А лучше как cmake - в одних местах case-sensitive, а в других case-insensitive?

     
     
  • 5.35, . (?), 10:09, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > А лучше как cmake - в одних местах case-sensitive, а в других
    > case-insensitive?

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

     
  • 3.12, anonymous (??), 20:39, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > QBS хотя бы декларативный

    А значит ещё более трудный для поддержка. Потому что хз, в каком порядке он там что вызывает.

     
     
  • 4.18, Аноним (-), 22:36, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Внезапно, make декларативный.
     
     
  • 5.19, anonymous (??), 23:37, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Внезапно, не декларативный. Порядком вызова команд можно управлять.
     
     
  • 6.50, Аноним (-), 09:44, 04/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Внезапно, не декларативный. Порядком вызова команд можно управлять.

    А можно и не управлять. Это достаточное условие для декларативности.

    Просто там управлять порядком вызовов неудобно, а управлять целями - наглядно. И это уже _признак_ декларативности.

    Учите матчасть!

    И покажите из практически применяемых, а не академических, языков хоть один на 100% декларативный или на 100% императивный или на 100% функциональный или на 100% какой-нибудь там еще.

     
  • 5.34, . (?), 10:07, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    вы и make не умеете, как я погляжу...

     
  • 2.6, Аноним (-), 19:28, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Что не так-то?)
    JavaScript на сегодня стал одним из быстрейших интерпретирумых языков
     
     
  • 3.11, anonymous (??), 20:36, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Заметно. Бедные Qt-шники даже компилятор для него запилили.


     
     
  • 4.16, Аноним (-), 20:54, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Заметно. Бедные Qt-шники даже компилятор для него запилили.

    В Qt он не очень быстрый в сравнении с браузерами или нодой, но при типовом использовании всё более чем на хорошем уровне

     
     
  • 5.20, anonymous (??), 23:40, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> Заметно. Бедные Qt-шники даже компилятор для него запилили.
    > В Qt он не очень быстрый в сравнении с браузерами или нодой,
    > но при типовом использовании всё более чем на хорошем уровне

    Что, электрон таки быстрее? О этот чудный диванный мир...

     
     
  • 6.23, Аноним (-), 00:52, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Что, электрон таки быстрее? О этот чудный диванный мир...

    Не нужно путать. В электроне обычный веб, а в QML отрисовка на плюсах и опенгл работает

     
     
  • 7.30, anonymous (??), 09:19, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А браузере отрисовка на JS что ли? Не смешно.
     
     
  • 8.46, Аноним (-), 06:13, 02/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Как минимум, все нестандартные компоненты - это JS ... текст свёрнут, показать
     
  • 5.26, qooKot (?), 06:58, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Есть инфа, что Qt использует все тот же V8, например...
    Так что ваше "не очень быстрый в сравнении с браузерами или нодой" - бред. Он ровно тот же что в браузерах и этой-вашей-ноде.

    >> но при типовом использовании всё более чем на хорошем уровне

    Вы уж определитесь. Типовое использоваение js - как раз браузеры и нода. А вы утверждаете, что в браузере и ноде быстрее... Несогласованность в ваших высказываниях вижу я.

     
     
  • 6.28, solarw (?), 07:34, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    для qml используется собственный движок v4, сделан для скорости работы с qobject, что бы избегать постоянных преобразований в/из js
     
  • 6.38, Аноним (-), 14:10, 31/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Вы уж определитесь. Типовое использоваение js - как раз браузеры и нода

    Типовое использование в Qt. Едрить Вы бестолочь, сударь.

    > Qt использует все тот же V8

    Когда-то давно так действительно и было, но теперь нет. ES6+, к примеру, там нет.

    > Несогласованность в ваших высказываниях вижу я

    Знаний силу не мне нужно постичь. Спорить не стоит в пространстве неизвестном.

     
  • 2.8, Аноним (9), 20:25, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Не путайте QML и js.
    QML это простой и понятный декларативный язык. От js он взял лучшее, а именно JSON структуру. В большинстве случаев его и изучать то не требуется. Для декларирования очень удобен. Зря Qt его как js like рекламируют.
    К творениям веб-макак вроде nodejs, да и к типичному js коду, он имеет мало отношения.
     
     
  • 3.10, anonymous (??), 20:35, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Как ты логику без JS собрался с QML работать? Чтобы тут диванные теоретики не описывали, но QML язык разметки, прибитый гвоздями к JS.
     
     
  • 4.15, Аноним (-), 20:51, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Как ты логику без JS собрался с QML работать? Чтобы тут диванные
    > теоретики не описывали, но QML язык разметки, прибитый гвоздями к JS.

    Так-то да, но обычно он используется на достаточно примитивном уровне и очень хорошо вливается в общую концепцию

     
     
  • 5.21, anonymous (??), 23:41, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Настолько примитивном, что необходимость прибивать его гвоздями вызывает недоумение.
     
     
  • 6.24, Аноним (-), 00:55, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Настолько примитивном, что необходимость прибивать его гвоздями вызывает недоумение.

    А как иначе? Что использовать для интерфейсной и лёгкой бизнес логики?
    JS - идеальный выбор, как ни крути

    Ну и всегда остаётся C++ way для отрисовки

     
     
  • 7.27, qooKot (?), 07:02, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > JS - идеальный выбор, как ни крути

    Ну ведь неправда же. Всегда есть набор ЗА и ПРОТИВ.
    И выбрали его не потому, что он идеален, а по вполне себе прагматическим соображениям. Под него есть готовый движок, например.

     
     
  • 8.36, anonymous (??), 12:35, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Его никто выбирал Его притащили адепты из совсем другой области ... текст свёрнут, показать
     
  • 7.31, anonymous (??), 09:23, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >> Настолько примитивном, что необходимость прибивать его гвоздями вызывает недоумение.
    > А как иначе? Что использовать для интерфейсной и лёгкой бизнес логики?
    > JS - идеальный выбор, как ни крути

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

    > Ну и всегда остаётся C++ way для отрисовки

    Не остаётся. Из криокамеры вылезай.

     
     
  • 8.39, Аноним (-), 14:13, 31/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    На практике это довольно удобно Желаю успехов с интерфейсом на C Остаётся М... текст свёрнут, показать
     
  • 3.14, Аноним (-), 20:49, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • –8 +/
    Что плохого в ноде-то? Серьезно, относительно недавно использую, классная вещь, быстрее всяких Ruby / PHP. Как глоток свежего воздуха после типизированных компилируемых языков.

    p.s. QML, конечно, нравится больше, он более структурированный, лаконичный и логичный

     
     
  • 4.22, anonymous (??), 23:42, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вот, ещё один фрейворк с языком сравнивает. Фу таким быть.
     
     
  • 5.25, Аноним (-), 00:57, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну вот, ещё один фрейворк с языком сравнивает. Фу таким быть.

    Где? JavaScript принципиально  разный бывает, поэтому корректно отдельно писать, мол JS в ноде, JS в QML

     
     
  • 6.32, anonymous (??), 09:24, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >JavaScript принципиально разный бывает

    После этой фразы мне стало смешно.

     
     
  • 7.40, Аноним (-), 14:16, 31/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > После этой фразы мне стало смешно.

    Соболезную. Движков JS много и каждый может работать немного иначе.
    Допустим, в QML банально нет ES6+ (на самом деле, и не нужно), нет DOM / window / etc -> процесс написания приложения сильно отличается от аналогичного в вебе.
    Это как сравнивать C++99 + Qt и C++11, например. Совершенно разные подходы, совершенно разные функции.

     

  • 1.2, Аноним (-), 18:30, 29/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Добавили бы что ли в список продуктов просто "*.o", а то приходится костылить через static library.

    А еще есть пренепреятнейший баг - в каком бы порядке не шли Depends, порядок линковки будет одним и тем же (по алфавиту они там их сортируют или как - хз). И запросто может получиться что в этом порядке нихрена не слинкуется (а поменять нельзя). Приходится костылить и проблемную либу еще раз в cpp.staticlibraries уже дописывать явно.

     
     
  • 2.13, Аноним (-), 20:42, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > запросто может получиться что в этом порядке нихрена не слинкуется

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

     
  • 2.37, Владимир (??), 05:50, 31/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    дико извиняюсь, а как у вас получается что от порядка компоновки Depends у вас что-то зависит? такое может быть только если библиотеки между собой имеют неявные зависимости? собирал под gcc проект примерно на 40 библиотек, с корректно проставленными Depends все линковалось в нужном порядке. да и пофиг на сортировку в рамках одной цели если честно.
    ну или заводите баг им в трекере)
     

  • 1.29, ембедщиккун (?), 09:16, 30/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Qbs - это хтонический кошмар с миграцией конфигов каждую минорную версию.
    Никакущая документация, явно виден закос под смартфоно-десктопы, ни для чего другого система сборки не затачивалась, будто других тулчейнов и прочего просто не существует.
     
     
  • 2.33, anonymous (??), 09:25, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Qbs - это хтонический кошмар с миграцией конфигов каждую минорную версию.
    > Никакущая документация, явно виден закос под смартфоно-десктопы, ни для чего другого система
    > сборки не затачивалась, будто других тулчейнов и прочего просто не существует.

    Ничего, говорят в Qt6 оно будет по дефолту. Может тогда хоть их будут бить по рукам за постоянные поломки.

     
  • 2.41, Аноним (-), 14:16, 31/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Пока развивается и не дефолт. Использовать нан страх и риск, конечно же. Ждем официальный отказ от qmake и хорошей документации.
     

  • 1.48, Дуплик (ok), 21:22, 02/04/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Gradle и CMake убьют эту поделку.
     
     
  • 2.49, Аноним (-), 08:29, 03/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    CMake уже никого не yбbёт. Его самого скоро Meson закoпает.
     
  • 2.51, Led (ok), 02:37, 05/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Gradle и CMake убьют эту поделку.

    Угу. Твой мозг они уже убили.

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



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

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