LINUX.ORG.RU
ФорумTalks

[Qt]Новая система сбоки

 


0

3

Вчера в qt-labs была представлена новая система сборки: qbs.
В отличии от qmake она не генерирует файлы для make/CMake, а самостоятельно запускает компилятор, линкер и прочее.

Киллерфича: возможность встроить JavaScript код в файл сборки.

Подробности тут http://labs.qt.nokia.com/2012/02/15/introducing-qbs/

★★★★★

Последнее исправление: trex6 (всего исправлений: 1)

Ответ на: комментарий от Deleted

Я только сегодня до RSS добрался.
Поправил.

trex6 ★★★★★
() автор топика
Ответ на: комментарий от geekless

Словно это что-то… жабаскрипт говорите?

Deleted
()

Киллерфича: возможность встроить JavaScript код в файл сборки.

Теперь можно будет сборкой управлять из браузера мыжкой?

deb
()

В отличии от qmake она не генерирует файлы для make/CMake, а самостоятельно запускает компилятор, линкер и прочее.

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

kranky ★★★★★
()

Примеры для Ъ:

files: ["foo.h", "foo.cpp", "main.cpp"]              // editable from IDE
files: generateFileList().concat(['extra.cpp'])      // only editable in your text editor

// helloworld.qbp
import qbs.base 1.0

CppApplication {
     name: "HelloWorld"
     files: "main.cpp"
}

Rule {
    ...
    prepare: {
        var cmd = new JavaScriptCommand();
        cmd.description = "generating " + FileInfo.fileName(output.fileName);
        cmd.qtcreator_version = product.module.qtcreator_version;
        cmd.sourceCode = function() {
            var inf = new TextFile(input.fileName);
            var all = inf.readAll();
            all = all.replace(new RegExp('\\\$\\\$QTCREATOR_VERSION(?!\w)', 'g'), qtcreator_version);
            var file = new TextFile(output.fileName, TextFile.WriteOnly);
            file.write(all);
            file.close();
        }
        return cmd;
    }
}
Deleted
()
Ответ на: комментарий от CARS

Да, Ant упоминается в оригинальной статье как аналог.

trex6 ★★★★★
() автор топика
Ответ на: комментарий от trex6

Тоже фигня. Ждём когда Qt будет поставляться вместе с аппаратным обеспечением на собственной архитектуре и прошитой на него ОС.

kranky ★★★★★
()

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

Sadler ★★★
()
Ответ на: комментарий от mrdeath

ага. Тобишь жабаскрипт это нормально? :)

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

Sadler ★★★
()
Ответ на: комментарий от Sadler

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

mrdeath ★★★★★
()
Ответ на: комментарий от mrdeath
cmake_minimum_required(VERSION 2.8)
project(test)

find_package(Boost COMPONENTS regex REQUIRED)

add_definitions(-Wall -std=c++0x -pedantic)
add_executable(test main.cpp)

target_link_libraries(test 
${Boost_REGEX_LIBRARY}
)

Как это будет выглядеть на шелле?

frozenix ★★★
()
Ответ на: комментарий от Deleted

хм... а почему бы вместо

new RegExp('\\\$\\\$QTCREATOR_VERSION(?!\w)', 'g')
не запользовать
/\$\$QTCREATOR_VERSION(?!\w)/g

dismal_faun ★★
()
Ответ на: комментарий от Deleted

один большой телефонный оператор тоже так думал, пока я не пришел. Теперь они ах$#ют от скорости разработки.

Что бы писать мейкфайлы, билд скрипты, нужно всего лишь 2 часа вдумчиво почитать man make.

Для автомазицонных целей шелл, мейк и expect — это безальтернативные вещи.

mrdeath ★★★★★
()
Ответ на: комментарий от mrdeath

До-о. Ваши шелл скрипты (особенно баш) это write only хуже перла, а уж то, что языковые конструкции там очень бедные…

Deleted
()
Ответ на: комментарий от mrdeath

DEPS=`pkg-config --libs --includes ..`
SRC=main.c
test: $SRC
$CC $DEPS -Wall -std=c++0x -pedantic -o $$< $SRC

mrdeath ★★★★★
()
Ответ на: комментарий от Deleted

:) не все йогурты одинаково полезны. Для этого люди и придумали coding style regulations.

У меня что на шеле, что на перле код так же читабелен как и на яве.

mrdeath ★★★★★
()
Ответ на: комментарий от no-such-file

Пока что это лишь эксперементальная разработка.
Если дорастет до продакшн, думаю без проблем впилят.

P.S. Лучше бы систему сборки пакетов для популярных линукс дистрибутивов впилили...

trex6 ★★★★★
() автор топика
Ответ на: комментарий от buddhist

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

Удобно, если эта крышка от гроба для гнома — там спецотверстия же.

black7
()
Ответ на: комментарий от vada

Скорее они взяли двигло от qml и быстренько на нем систему сборки собрали. В принципе оно весьма симпатишное на вид получилось, уж всяко красивше qmake'а и cmake'а.

Gorthauer ★★★★★
()
Ответ на: комментарий от mrdeath

Толку его читать? Одно неверное движение и внезапно дыры и потери :} Когда код разрастается на несколько экранов можно тушить свет…

Deleted
()
Ответ на: комментарий от Gorthauer

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

trex6 ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Ну на заборе тоже написано^W
В смысле хотелось бы уточнить, за счет чего.
Есть подозрение, что при сборке qmake'ом просто забыли добавить ключик -j9 для make.

trex6 ★★★★★
() автор топика
Ответ на: комментарий от trex6

>при сборке qmake'ом просто забыли добавить ключик -j9
Толсто.

Собери, попробуй. Может там прорыв :}

Deleted
()
Ответ на: комментарий от trex6

А ты прикрути к нему кодогенерацию или например проверку на наличие в системе тех или иных возможностей. Ну и посмотри вообще на код deployment'а.

Ужас же получается!

Gorthauer ★★★★★
()
Ответ на: комментарий от trex6

Хотя бы потому, что qmake генерит рекурсивные makefile'ы, а qbs просто линейно все билдит. В итоге многопоточная сборка оказывается банально эффективнее! Ну и блин, почитай там доку, меня возможность конфигурировать в qbs таргеты очень радует.

Gorthauer ★★★★★
()

Чтобы откомпилировать программу надо написать _программу_ компиляции? О ужас! Для компиляции HelloWorld на С++ необходимо знание JS. Куда катиться мир!

void_ptr ★★★★
()
Ответ на: комментарий от Gorthauer

А чем qmake не угодил?

А ты прикрути к нему кодогенерацию [...] и посмотри вообще на код deployment'а.

Ничего себе требования к системе сборки.

tailgunner ★★★★★
()
Ответ на: комментарий от Gorthauer

Спасибо за направление, посмотрю что там с рекурсивными makefile'ами.

Про конфигурирование таргетов. Не очень понял, о чем собственно речь.

trex6 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.