URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 111358
[ Назад ]

Исходное сообщение
"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."

Отправлено opennews , 29-Май-17 22:20 
Состоялся (http://blog.qt.io/blog/2017/05/29/qbs-1-8-released/) релиз развиваемого проектом Qt сборочного инструментария qbs 1.8 (http://qt-project.org/wiki/qbs) (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++;
-  В сообщениях об ошибках улучшен вывод информации о строке и позиции, в которой допущена ошибка;

-  В    PkgConfigProbe предоставлен высокоуровневый API для разбора флагов компилятора и компоновщика, выводимых pkg-config;

-  Обеспечена возможность сборки qbs со статическим связыванием;
-  Изменения нарушающие совместимость: В свойстве cpp.linkerFlags прекращена обработка экранированных значений. Все файлы, входящие в набор (bundle) на платформах Apple, теперь помечаются как bundle.content. Базовая директория для исходных файлов теперь указывает на родительский каталог  файла, в котором размещён этот файл, а не базовую директорию исходных текстов продукта.

URL: http://blog.qt.io/blog/2017/05/29/qbs-1-8-released/
Новость: https://www.opennet.ru/opennews/art.shtml?num=46620


Содержание

Сообщения в этом обсуждении
"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено nc , 29-Май-17 22:20 
Опробовать его что-ли для нового проекта... Штука-то явно хорошая.

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено A.Stahl , 29-Май-17 22:28 
>Qbs использует упрощённый вариант языка QML для определения сценариев ... в которых могут ... использоваться функции на JavaScript

Технически, может, и не плохо, но не факт что этим приятно будет пользоваться. У меня, плюсовика, как-то не много энтузиазма обмазываться вебятиной и писать мейкфайлы на ЯваСкрипте. Потыкать палочкой нужно, может там не всё так и плохо, но что-то стрёмно...


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Аноним , 29-Май-17 22:31 
JS != вебятина, хотя да, JS это вебятина, а вот ECMAScript(JS без браузерного апи), который скорее-всего и имелся в виду - это скриптовой язык, такой же как Lua и остальные

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено anonymous , 29-Май-17 22:49 
>такой же как Lua

Жирноват он.


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Аноним , 29-Май-17 22:50 
Ну это уже от реализации зависит

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено anonymous , 29-Май-17 23:01 
> Ну это уже от реализации зависит

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


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Аноним , 29-Май-17 23:18 
У JS хотя бы синтаксис похож на сишный, в отличие от того безобразия, что в cmake

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено anonymous , 29-Май-17 23:58 
> У JS хотя бы синтаксис похож на сишный, в отличие от того
> безобразия, что в cmake

Это в каком же месте он похож?


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено НяшМяш , 30-Май-17 00:32 
Эээ, фигурные скобочки - есть, разделитель ; - есть, большинство синтаксических конструкций - тоже. Во всяком случае, сишнику куда проще читать ябыскрипт, чем какой-нибудь упрт пайтон.

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено anonymous , 30-Май-17 09:38 
>куда проще читать ябыскрипт, чем какой-нибудь упрт пайтон

А что не так с пайтоном? Вот честно, не понимаю твоих трудностей.


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Аноним , 30-Май-17 10:54 
не выйдет не читая ничего что-то напрограммить, а в js можно попробовать воткнуть код от c++ и если не заработает как надо, только тогда иди за документами :)
Но это не + на мой взгляд, а питон, да ну его, php проще :)

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Отражение луны , 30-Май-17 00:43 
> вебятина

Вернул 2007й?


"Полено!"
Отправлено Grammar Narziss , 30-Май-17 16:53 
«что ли», Буратино

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Аноним , 29-Май-17 22:26 
> JavaScript

Triggered


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Not Secure , 29-Май-17 22:33 
меня и CMake вполне устраивает

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено anonymous , 29-Май-17 22:50 
> меня и CMake вполне устраивает

А какая разница. Всё равно в Qt6 его будут тащить.


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Tat , 29-Май-17 23:32 
CMake никуда убирать не планируют. Более того, наоборот, планирует увеличивать его поддержку.

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Аноним , 29-Май-17 23:08 
>Qt Build Suite, который заменит qmake в Qt 6

Ну наконец-то они это озвучили. А то пилят, а сами qmake используют. Отсюда сомнение каке-то о проекте.


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено anonymous , 29-Май-17 23:13 
>>Qt Build Suite, который заменит qmake в Qt 6
> Ну наконец-то они это озвучили. А то пилят, а сами qmake используют.
> Отсюда сомнение каке-то о проекте.

А что тут сомневаться? Фанбои жаваскрипта там окопались. Они так JS и в QtCore пропихнут.


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено фтттт , 30-Май-17 09:54 
ты предпочитаеш Guile ?

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Вареник , 30-Май-17 16:34 
Как угробить лучшую С++ библиотеку и заставить С++ жрать больше C#, Java и Python вместе взятых? Ну конечно воткнуть JS во все.

Даешь еще внедрение AOP вставок на JS, в qtCore. Модно, свежо, достаточно извращенно чтобы удивить пересыщенную публику.


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено K.O. , 30-Май-17 17:28 
Вот не понимаю как система сборки может заставить С++ "жрать больше C#". А как же скриптовые ./configure + make?

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено anonymous , 29-Май-17 23:12 
В зависимостях QtCore и QtScript. Да оно пожирнее cmake выходит. Опять какой-то умник решил за всех.

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено anonymous , 29-Май-17 23:29 
>В отличие от qmake, qbs не привязан к Qt

Хм...

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

4316


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Чебурашка , 29-Май-17 23:58 
Умник штoле? Он не привязан к Qt в том смысле, что поддержка Qt там сделана средствами самой системы сборки, а не прибита гвоздями к ядру, как в qmake.

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено anonymous , 30-Май-17 00:03 
> а не прибита гвоздями к ядру, как в qmake.

Чего там у тебя прибито?


$ ldd /opt/qt58/bin/qmake
    linux-gate.so.1 =>  (0xb77cf000)
    libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb76c3000)
    libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb767d000)
    libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb765f000)
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb74af000)
    /lib/ld-linux.so.2 (0x800f0000)

>Он не привязан к Qt в том смысле, что поддержка Qt там сделана средствами самой системы сборки

Ага, написано с использованием Qt и при этом не привязано к Qt. Ты хоть читаешь, что сам пишешь?


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Аноним , 30-Май-17 11:35 
>> а не прибита гвоздями к ядру, как в qmake.
> Чего там у тебя прибито?

Прибито, просто в QMake и прочих Qt-шных сборочных утилитах (moc, rcc, uic и т.п.) необходимые части Qt статически вкомпилируются в бинарники и потому наружу не торчат. Впрочем, там по-другому особо и не получится, т.к. иначе при сборке самого Qt возникала бы проблема курицы и яйца, а с бутстрапом заморачиваться не стали.


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Аноним , 30-Май-17 13:29 
В qmake поддержка Qt тоже сделана через .prf файлы

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Аноним , 31-Май-17 13:47 
А что в плюсах своих строк нету?

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено trolleybus , 30-Май-17 00:10 
"Не привязана к Qt" - это значит "может быть использована для не-Qt проектов". То есть, сама QBS написана на Qt, но проекты, ее использующие, могут быть совсем не связанными с Qt.


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено anonymous , 30-Май-17 00:14 
> "Не привязана к Qt" - это значит "может быть использована для не-Qt
> проектов". То есть, сама QBS написана на Qt, но проекты, ее
> использующие, могут быть совсем не связанными с Qt.

Ставить Qt для сборки проекта без Qt? Какое-то бредовое применение...


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено chig00 , 30-Май-17 04:43 
Ставить надо только библиотеки Qt, они и так в 95% случаев стоят на десктопах, даже на пользовательских. Точно так-же если писать код в gedit, то нужно будет поставить GTK, хотя проект может быть написан хоть на ассемблере.

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено anonymous , 30-Май-17 09:43 
> Ставить надо только библиотеки Qt, они и так в 95% случаев стоят
> на десктопах, даже на пользовательских. Точно так-же если писать код в
> gedit, то нужно будет поставить GTK, хотя проект может быть написан
> хоть на ассемблере.
>в 95% случаев стоят на десктопах

Я тебе открою секрет. Сборка может быть произведена не только на десктопах...


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено фтттт , 30-Май-17 09:51 
Я тебе открою секрет, Qt есть не только на десктопах

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Аноним , 30-Май-17 12:20 
Только вот он нафиг не нужен на сервере.

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено A.Stahl , 30-Май-17 12:36 
Qt, внезапно, это не только "окошки". Но тулкитофобы обычно такими мелочами не интересуются.

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Аноним , 30-Май-17 13:06 
Я не тулкитофоб, но найди мне хоть одну серверную софтину на Qt. Web-сервер, там, или БД. Скорее уж всякая вебятина найдется на Ruby или php, чем Qt. Тулчейны для сборки тоже ни разу не зависят от Qt, за исключением тех, которые от самого Qt.

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Аноним_oyc , 30-Май-17 09:28 
Только qtcore, как сказали выше. Не нужно ставить все части, Qt 5 хорошо порезан.

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено anonymous , 30-Май-17 09:45 
> Только qtcore, как сказали выше. Не нужно ставить все части, Qt 5
> хорошо порезан.

Про QtScript ты  специально умалчиваешь? И интересно, где там отдельный тарбол для qtcore.


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено VladSh , 30-Май-17 16:13 
Qt Script deprecated in Qt 5.5.

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Аноним , 30-Май-17 09:14 
Внезапно, qmake тоже можно использовать для сборки проектов, не зависящих от Qt.

QT -= core, и вперед.


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Чебурашка , 29-Май-17 23:49 
Хорошая штука на самом деле
Перевели на работе на него два небольших Qt-шных проекта c богомерзкого CMake, пока всем нравится
Из плюсов: человекочитаемые билд скрипты, простой как топор - полноценно начать юзать можно за вечер, qt и android из коробки, нормальная система профилей вместо костыльных тулчейнов в cmake.
Минусы: доки хромают, готовься читать исходники; не хватает некоторых фич (например нет аналога cmake-овских FindXXX, только pkgconfig probe или указывать флаги руками если винда); пару раз были глюки с генератором проектов для msvc.
На небольших проектах (~15kloc) по скорости сильной разницы с CMake + Makefiles не было замечено

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Аноним , 30-Май-17 11:42 
> по скорости сильной разницы с CMake + Makefiles не было замечено

А с CMake + Ninja? Гененрируемые CMake-ом мейкфайлы -- это треш и угар с хитрой системой вызовов одного из другого и прочими непотребствами.


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Владимир , 30-Май-17 15:53 
А с нинзя фанбои qbs обычно не сравнивают, всегда с богомерзким make. Ninja рвет просто qbs в инкрементных билдах - поэтому лично я от него отказался. На мелких проектах меньше 100к SLOC, да, QBS можно поюзать.

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено anonymous yet another , 30-Май-17 00:02 
> Добавлена начальная поддержка сборки приложений для ОС QNX.

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

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


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено anonymous , 30-Май-17 00:04 
>> Добавлена начальная поддержка сборки приложений для ОС QNX.
> ...
>> Обеспечена официальная поддержка сборки приложений для FreeBSD.
> Похоже, можно только то, что "предусмотрели" авторы. Ну и JavaScript умиляет.

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


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Аноним_oyc , 30-Май-17 09:32 
JavaScript там без веба.

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


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Вареник , 30-Май-17 16:39 
> JavaScript там без веба.
> PS Ну были бы там Python, Ruby, сильно быстрее было бы?

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


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено фтттт , 30-Май-17 09:42 
>>Похоже, можно только то, что "предусмотрели" авторы. Ну и JavaScript умиляет.

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


"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено Аноним , 30-Май-17 18:45 
А как у него с поиском зависимостей? т.е. как устроен поиск сторонних библиотек

"Выпуск сборочного инструментария qbs 1.8, развиваемого проек..."
Отправлено фтттт , 31-Май-17 08:02 
Там есть такая фигня как Probe - http://doc.qt.io/qbs/probe-item.html
Ты ее конфигурируеш, пишеш на javascript что и где искать.
Есть небольшой набор проб в поставке - http://code.qt.io/cgit/qt-labs/qbs.git/tree/share/qbs/import...

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

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