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

Исходное сообщение
"Разработчики Qt представили инструментарий для сборки проект..."

Отправлено opennews , 16-Фев-12 17:55 
Разработчики из компании Nokia представили (http://labs.qt.nokia.com/2012/02/15/introducing-qbs/) новый экспериментальный сборочный инструментарий qbs (http://chaos.troll.no/~dmolkent/qbs-0.1/) (Qt Build Suite), предназначенный для сборки приложений, основываясь на данных файла-проекта, все команды которого записаны на упрощенном диалекте языка QML (http://en.wikipedia.org/wiki/QML). Файл с правилами сборки описывает только один проект, который в тоже время может содержать несколько разных программных продуктов, каждый из которых может иметь свой тип (приложение, библиотека и так далее) и отдельную схему сборки.  Код qbs открыт (http://qt.gitorious.org/qt-labs/qbs) под лицензией LGPL.

Использование упрощённой версии QML для оформления файлов с правилами сборки с одной стороны упрощает интеграцию с интегрированными средами разработки, а с другой позволяет реализовать нестандартные шаги, интегрируя в файл сборки функции, реализованные на языке JavaScript, а также подключая внешние ...

URL: http://labs.qt.nokia.com/2012/02/15/introducing-qbs/
Новость: https://www.opennet.ru/opennews/art.shtml?num=33102


Содержание

Сообщения в этом обсуждении
"Разработчики Qt представили инструментарий для сборки проект..."
Отправлено yurkis , 16-Фев-12 18:00 
Мне не очевидно чем (кроме модного ныне JS) эта штука лучше CMake/SCons

"Разработчики Qt представили инструментарий для сборки проект..."
Отправлено Аноним , 16-Фев-12 18:42 
второй абзац новости

"Разработчики Qt представили инструментарий для сборки проект..."
Отправлено yurkis , 16-Фев-12 20:14 
Отработка дерева зависимостей быстрее на 4с? Проект должен быть ну ОООЧЕНЬ большим чтобы почуствовать разницу. Для инкрементально сборки "в стиле Eclipse" только... Но кто этим пользуется? Многопоточность (кто сказал make -j3)?

Может тогда расширяемость за счет скриптов? Так тут до SCons еще пилить и пилить.

Я конечно люблу Qt, но тут мне не очевидно.


"Разработчики Qt представили инструментарий для сборки проект..."
Отправлено Sauron , 16-Фев-12 23:19 
qml вообще-то by design жутко удобен для подобных задач. Опять же это только кажется, что на нем только гуй удобно делать, он вполне пригоден и для выполнения других задач.

"Разработчики Qt представили инструментарий для сборки..."
Отправлено arisu , 17-Фев-12 11:20 
> Опять же это только кажется, что на нем только гуй удобно делать

…а на самом деле неудобно даже это.


"Разработчики Qt представили инструментарий для сборки проект..."
Отправлено lucentcode , 16-Фев-12 19:01 
Хорошее начинание. Когда разовьют немного, будет очень удобно пользоваться. А пока Make - наше всё, ну и Ant иногда.

"Разработчики Qt представили инструментарий для сборки проект..."
Отправлено Аноним , 16-Фев-12 19:08 
Не внимательно читаем? Скорость сборки выше, гибкость для каких-то магических действий сборки

"Разработчики Qt представили инструментарий для сборки проект..."
Отправлено Sauron , 16-Фев-12 23:14 
Это вообще разные уровни для начала.

"Разработчики Qt представили инструментарий для сборки проект..."
Отправлено добрый дядя , 16-Фев-12 23:13 
очень люблю QMake, а теперь уже что-то более языко-независимое выплывает - я только рад

"Разработчики Qt представили инструментарий для сборки проект..."
Отправлено Sauron , 16-Фев-12 23:18 
Такс, а что мешало qmake и раньше использовать для сборки обычных C++/C приложений? Я так частенько делал и все прекрасно работало и собиралось :)
Просто нигде не афишируется, что qmake можно и не для Qtшных прог использовать, да и собрать qmake отдельно от Qt тот ещё процесс, хотя он тоже в принципе способен без установленных Qt работать, нужны только mkspecs'ы.
Впрочем у qbs синтаксис всё равно круче и было бы клево его видеть в виде отдельного проекта.

"Разработчики Qt представили инструментарий для сборки проект..."
Отправлено добрый дядя , 16-Фев-12 23:44 
> Такс, а что мешало qmake и раньше использовать для сборки обычных C++/C приложений?

ничего не мешало, я давно уже qmake юзаю для любых C++ прог как нормальную беспроблемную систему сборки на разных ОСях

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


"Разработчики Qt представили инструментарий для сборки проект..."
Отправлено green , 17-Фев-12 12:22 
qmake - очень слабенькая система сборки посравнению с аналогами. Если проект подвязан только к Qt + ещё простые библиотеки то недостатки неощутимы, кроме одного - это out-of-source-tree builds.
Но вот когда юзать qmake с другими фреймворками - boost, ACE и тд - то начинаюися проблемы.
Вобщем в этом случаие CMake выше на голову - но недостаток в том что он сложнее + дополнительная зависимость

"Разработчики Qt представили инструментарий для сборки проект..."
Отправлено annulen , 17-Фев-12 13:26 
>кроме одного - это out-of-source-tree builds

qmake давно это умеет, только реализовано немного кривовато (каталог сборки не может находиться внутри каталоги с исходниками)


"Разработчики Qt представили инструментарий для сборки проект..."
Отправлено green , 17-Фев-12 13:35 
Да знаю о таком функционале. Но снова таки слабенько. Сборка происходет в папке с исходными файлами и надо задавать флаги qmake или явно прописывать в pro файле - это менее удобто чем то как это реализовано в CMake

"Разработчики Qt представили инструментарий для сборки..."
Отправлено arisu , 17-Фев-12 14:32 
> out-of-source-tree builds.

кстати, а зачем? вот у меня jam, например, складывает объектники в спецкаталог, равно как и бинари, и библиотеки; в рабочих каталогах с исходниками не гадит вообще, если сильно не попросить. вот я ним уж сколько лет пользуюсь и не могу понять восторгов по поводу oostb. только и радости, что скрипты усложняют.


"Разработчики Qt представили инструментарий для сборки..."
Отправлено arisu , 17-Фев-12 11:18 
из долгих обсуждений в их бложеге я в своё время так и не понял, чем им не понравился jam (в любой из его инкарнаций). ну, кроме обычного Фатального Недостатка.

зато не требует никаких кусков Qt, собирается любым си-компилятором, имеет вполне себе turing-complete язык, умеет рассматривать проект в куче каталогов как одно целое, умеет сканировать исходники на предмет include и кэшировать это… вдобавок лицензия почти что public domain, с включением в любой проект проблем нет.

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

p.s. прошу не путать с boost.jam: это мутант, больной овердизайном, как и сам буст.


"Разработчики Qt представили инструментарий для сборки..."
Отправлено Аноним , 22-Фев-12 01:14 
представь что у нас есть человек который освоил js и qml и написал программу, а тут бац за пять минут он понял как её собрать с помощью qbs.. и когда ему понадобится добавлять сложную логику он просто напишет её на явоскрипте а не на языке системы сборки.

"Разработчики Qt представили инструментарий для сборки..."
Отправлено arisu , 22-Фев-12 01:15 
> освоил js и qml
> написал программу

неа. не получается.


"Разработчики Qt представили инструментарий для сборки проект..."
Отправлено annulen , 17-Фев-12 13:25 
Используйте Premake. Декларативный синтаксис еще более лаконичен, плюс поддержка существующих IDE и независимость инструмента от Qt

http://industriousone.com/premake
http://industriousone.com/topic/full-stack-qt-based-developm...-
download
http://wiki.qt-project.org/Qt_Creator/Plugins/PremakeProject...


"Разработчики Qt представили инструментарий для сборки..."
Отправлено arisu , 17-Фев-12 14:39 
> Используйте Premake

а ты бы почитал причины, по которым «генераторы makefile-сов» были забракованы, что ли. сам по себе premake хорош, но вот формой не подходит.


"Разработчики Qt представили инструментарий для сборки..."
Отправлено annulen , 17-Фев-12 16:24 
Если ты про пункт "Build directly from tool", то он полон взаимоисключающих параграфов. Во-первых, идет речь про вызовы CMake изнутри мейкфалов, чем Premake не грешит, да и вообще генерация мейкфайлов сама по себе не предполагает этой антифичи. (Для каких-то кастомных шагов это может быть допустимо, но CMake делает из этого систему) Во-вторых, далее следует фраза "Waf is better in this respect, but both lack a proper set of backends for project generations (Vcproj, XCode, Makefiles etc).".

Вобщем, на мой взгляд, реальные причины - "не JavaScript" и "не наши имена в копирайтах".


"Разработчики Qt представили инструментарий для сборки..."
Отправлено arisu , 17-Фев-12 17:40 
> Если ты про пункт "Build directly from tool"

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


"Разработчики Qt представили инструментарий для сборки..."
Отправлено annulen , 17-Фев-12 17:51 
Совершенно бессмысленный аргумент. В той статье написано, что рекурсивный мейк не нужен. Так генерите нерекурсивные мейкфалы, и будет вам Щастье. Нет, блин, все пытаются свой мейк для этого написать.

Из всех проектов по замене мейка внимания заслуживает только ninja.


"Разработчики Qt представили инструментарий для сборки..."
Отправлено arisu , 17-Фев-12 17:55 
> Совершенно бессмысленный аргумент.

это туда, в нокию.

> В той статье написано, что рекурсивный мейк не нужен.

им осталось сделать ещё жажок и убрать слово «рекурсивный».

> Нет, блин, все пытаются свой мейк для этого написать.

далеко не только для этого, сия фича — просто вкусный бонус.

> Из всех проектов по замене мейка внимания заслуживает только ninja.

у make обнаружился Фатальный Недостаток, ага. это я намекаю, что «замена make» не нужна, равно как и сам make. а нинзя — это не пришей системе шлейф какой-то.


"Разработчики Qt представили инструментарий для сборки..."
Отправлено annulen , 17-Фев-12 18:11 
Интересная логическая цепочка: "рекурсиный мейк не нужен" - "так не используй его через ж^W^W рекурсивно" - "да наплевать, все равно мейк не нужен".

"Разработчики Qt представили инструментарий для сборки..."
Отправлено arisu , 17-Фев-12 19:09 
> Интересная логическая цепочка: «рекурсиный мейк не нужен» — "так не используй его
> через ж^W^W рекурсивно" — «да наплевать, все равно мейк не нужен».

вообще-то «make не нужен» — это моя аксиома. понятно, что отсда следует, что не нужен никакой.


"Разработчики Qt представили инструментарий для сборки..."
Отправлено annulen , 17-Фев-12 18:18 
У ninja цель совершенно четкая - отделить построение DAG целей сборки и их выполнение от любых "конфигурационных" действий, чем страдает мейк. Конфигуратор делает свою работу, а нинзя - свою.



"Разработчики Qt представили инструментарий для сборки..."
Отправлено arisu , 17-Фев-12 19:12 
> У ninja цель совершенно четкая — отделить построение DAG целей сборки и
> их выполнение от любых «конфигурационных» действий, чем страдает мейк. Конфигуратор делает
> свою работу, а нинзя — свою.

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


"Разработчики Qt представили инструментарий для сборки..."
Отправлено Michael Shigorin , 17-Фев-12 19:31 
> нет, я про то, что make не видит проект, раскиданый по каталогам,
> как одно целое. уж кто только не ругался на рекурсивные вызовы
> make в подкаталогах.

Виденная критика была местами крива сама по себе.  Впрочем, обстоятельно сейчас не расскажу.


"Разработчики Qt представили инструментарий для сборки..."
Отправлено arisu , 17-Фев-12 19:43 
> Виденная критика была местами крива сама по себе.  Впрочем, обстоятельно сейчас
> не расскажу.

ну, кое-как, с матами и воплями оно костылится.

так же, как костылится просчёт зависимостей (уж простейшие-то include система может и сама просканировать, я что, дятел — долбить ей это или костыли дёргать?).

а уж про «проект — это все *.c в каталоге исходников» (опять же, с просчётом зависимостей и ты пы)… не, не будем о грустном.

тот же Jam делает подобное несколькими строками. и вообще мал, реактивен (в плане скорости), удобен. для проектов среднего уровня можно его использовать и как конфигуратор заодно. да-да, я фанат jam'а, если кто ещё не заметил. и ниасилятор всего остального.


"Разработчики Qt представили инструментарий для сборки..."
Отправлено annulen , 17-Фев-12 20:08 
Просчет зависимостей делает компилятор и генерерует .d файлы, достаточно его об это попросить. Костылить ничего не надо, достаточно использовать в мейкфайлах инклуды вместо рекурсивных вызовов.

"Разработчики Qt представили инструментарий для сборки..."
Отправлено arisu , 17-Фев-12 20:20 
> Просчет зависимостей делает компилятор и генерерует .d файлы

это неудобно, хотя и точнее, чем можно сделать в билд-системе. и медленней, кстати.

помимо прочего, на свете есть не только два языка и один компилятор.

> Костылить ничего не надо, достаточно использовать в мейкфайлах инклуды вместо
> рекурсивных вызовов.

недостаточно, если я хочу, например, разные значения переменных для разных каталогов (или вообще для разных целей в одном). не то, чтобы этого совсем нельзя было сделать, но… нененене, только за большие деньги.

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

да, кстати: за табуляторы отдельный плевок. я понимаю, что «нечаянно получилось», но от этого оно приятней не становится.


"Разработчики Qt представили инструментарий для сборки проект..."
Отправлено Аноним , 22-Фев-12 01:16 
> Используйте Premake. Декларативный синтаксис еще более лаконичен, плюс поддержка существующих
> IDE и независимость инструмента от Qt
> http://industriousone.com/premake
> http://industriousone.com/topic/full-stack-qt-based-developm...-
> download
> http://wiki.qt-project.org/Qt_Creator/Plugins/PremakeProject...

замержить бы их идеи с вашими..