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

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

Отправлено opennews , 28-Апр-15 19:44 
Увидел свет (http://blog.qt.io/blog/2015/04/28/qbs-1-4-0-released/) релиз развиваемого проектом Qt сборочного инструментария qbs 1.4.0 (http://qt-project.org/wiki/qbs) (Qt Build Suite). Qbs использует упрощённый вариант языка QML для определения сценариев сборки проекта, что позволяет определять достаточно гибкие правила сборки, в которых могут подключаться внешние модули, использоваться функции на JavaScript и создаваться произвольные правила сборки. В отличие от qmake, qbs не привязан к Qt и изначально рассчитан на организацию сборки любых проектов.

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

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


-  Добавлена (https://doc.qt.io/qbs/android-sdk-module.html) экспериментальная поддержка платформы Android, в том числе для сборки проектов, содержащих нативный код (https://doc.qt.io/qbs/android-ndk-module.html). Специальная поддержка Qt и интеграция с Qt Creator  пока отсутствует;
-  Добавлен модуль archiver (https://doc.qt.io/qbs/archiver-module.html) для создания сжатых архивов. Данный модуль используется для организации работы компонента InstallPackage (https://doc.qt.io/qbs/installpackage-item.html);

-  Добавлено новое свойство builtByDefault, позволяющее определить продукты подлежащие сборке по умолчанию и  продукты собираемые только при явном запросе. В качестве примера подготовлено приложение AutotestRunner (http://doc.qt.io/qbs/autotestrunner-item.html), предоставляющее функции похожие на "make check";
-  Файлы теперь устанавливаются в рамках процесса сборки, что позволяет создавать продукты, работающие с содержимым установочной директории.


URL: http://blog.qt.io/blog/2015/04/28/qbs-1-4-0-released/
Новость: http://www.opennet.me/opennews/art.shtml?num=42122


Содержание

Сообщения в этом обсуждении
"Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..."
Отправлено rob pike , 28-Апр-15 19:44 
Тут кстати хорошая (правда хорошая!) про make вышла - http://www.nostarch.com/gnumake

"Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..."
Отправлено Аноним , 28-Апр-15 20:19 
Да, полезная книга. Автору вполне можно доверять - он с make уже долгое время работает.

"Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..."
Отправлено anon2 , 28-Апр-15 20:22 
>> производительность повторной пересборки с использованием qbs может опережать make в разы

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


"Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..."
Отправлено anonymous , 28-Апр-15 20:34 
>В отличие от qmake, qbs не привязан к Qt

Враньё. Для сборки нужен qmake. Пока qtbase не вытянешь, хрен соберёшь.


"Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..."
Отправлено RazrFalcon , 28-Апр-15 20:38 
Не нужно путать привязку и зависимости.

"Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..."
Отправлено Аноним , 28-Апр-15 21:47 
> Не нужно путать привязку и зависимости.

А в чём в данном случае разница?


"Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..."
Отправлено BSA , 29-Апр-15 22:44 
Отличия в том, что проект не обязан использовать Qt. Например, я успешно перевожу на qbs свои embedded проекты под ARM. А там не только Qt,  но и операционки даже нет.

"Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..."
Отправлено dismine , 28-Апр-15 21:10 
Им кто то вообще пользуется? В интернете информации ноль. Уже 1.4, а по ощущениях 0.4 только.

"Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..."
Отправлено АнонимЪ , 28-Апр-15 22:20 
Мы в продакшене используем. Впечатления положительные.

"Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..."
Отправлено анонн , 28-Апр-15 22:52 
Мы юзали его, до того как перешли на Gradle :) После CMake впечатления были очень положительные но до Gradle ему ооочень далеко, а учитывая темпы развития Gradle не догонит он его никогда...

"Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..."
Отправлено Аноним , 29-Апр-15 01:09 
Подождите подождите. Gradle? на каком языке программирования написан ваш проект?

"Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..."
Отправлено D , 29-Апр-15 13:10 
Gradle по барабану какой язык проекта. Хоть асм съест. Сам gradle конечно = jvm + groovy

"Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..."
Отправлено Аноним , 29-Апр-15 01:10 
Учитывая темпы развития груви, гредл скоро сдохнет за ненадобностью.

"Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..."
Отправлено Аноним , 29-Апр-15 01:29 
> Им кто то вообще пользуется? В интернете информации ноль. Уже 1.4, а
> по ощущениях 0.4 только.

Полностью согласен. Документация такая что лучше бы ее не было. Описаны абсолютно базовые вещи. При нокии такого не было, как понабежали хипстеры в Qt and Co. лютый пистец.


"Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..."
Отправлено Аноним , 29-Апр-15 07:38 
Больше сборочных инструментов для сборки сборочных инструментов!

"Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..."
Отправлено user , 29-Апр-15 12:38 
Кстати, какие сборочные инструменты нормально понимают генерацию сразу нескольких файлов?

Все реализации make в этом месте сделаны через задницу, хотя стандарт не запрещает сделать правильно.


"Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..."
Отправлено anon2 , 29-Апр-15 19:50 
> Кстати, какие сборочные инструменты нормально понимают генерацию сразу нескольких файлов?
> Все реализации make в этом месте сделаны через задницу, хотя стандарт не
> запрещает сделать правильно.

реализация генерации сразу нескольких файлов на gnu make:

empty :=
define newline
$(empty)
$(empty)
endef

# processed multi-target rules
MULTI_TARGETS:=

# to count each call of $(MULTI_TARGET)
MULTI_TARGET_NUM:=

# when some tool generates many files, call the tool only once
# $1 - list of generated files
# $2 - prerequisites
# $3 - rule
define MULTI_TARGET_RULE
$1: $2;\
  $$(if $$(filter $(words $(MULTI_TARGET_NUM)),$$(MULTI_TARGETS)),,$$(eval MULTI_TARGETS += $(words \
  $(MULTI_TARGET_NUM)))$$(info generating: $$@)$$(subst $$$$(newline),$$(newline),$(subst \
  $$(newline),$$$$(newline),$3$(foreach x,$1,$$(newline)touch $x))))
MULTI_TARGET_NUM += 1
endef

MULTI_TARGET_SEQ = $(if $(word 2,$1),$(word 2,$1): $(firstword $1)$(newline)$(call MULTI_TARGET_SEQ,$(wordlist 2,999999,$1)))

# NOTE: don't use $@ in rule because it may have different values,
#       don't use $(lastword $^) - tail of list of prerequisites may have different values
MULTI_TARGET_CHECK = $(if $(filter-out $(words x$3x),$(words x$(subst $$@, ,$3)x)),$(info Warning: don't use $$@ in rule:$(newline)$3))$(if \
  $(filter-out $(words x$(strip $3)x),$(words x$(subst $$(lastword $$^), 1 ,$(strip $3))x)),$(info Warning: don't use $$(lastword $$^) in rule:$(newline)$3))

# when some tool generates many files, call the tool only once
# $1 - list of generated files
# $2 - prerequisites
# $3 - rule
MULTI_TARGET = $(MULTI_TARGET_CHECK)$(eval $(MULTI_TARGET_SEQ)$(MULTI_TARGET_RULE))

$(call MULTI_TARGET,a1 a2 a3 a4 a5,dep1 dep2 dep3,echo 1 > a1; echo 2 > a2; echo 3 > a3; echo 4 > a4; echo 5 > a5)

dep1 dep2 dep3:; touch $@

all: a1 a2 a3 a4 a5

clean:; rm -f dep1 dep2 dep3 a1 a2 a3 a4 a5

Проверка:
$ make -f multi.mk -j5

touch dep1
touch dep2
touch dep3
generating: a1
echo 1 > a1; echo 2 > a2; echo 3 > a3; echo 4 > a4; echo 5 > a5
touch a1
touch a2
touch a3
touch a4
touch a5



"Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..."
Отправлено zxc , 30-Апр-15 18:12 
> Больше сборочных инструментов для сборки сборочных инструментов!

И книжек, книжек хороших побольше по 300 страниц про то как ими просто и быстро все собирать.


"Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..."
Отправлено Аноним , 03-Май-15 19:13 
Увы, мeртворожденное пoделие. Лучше cmake пока ничего нет.