- Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..., rob pike, 19:44 , 28-Апр-15 (1) +1
- Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..., anon2, 20:22 , 28-Апр-15 (3) +1
>> производительность повторной пересборки с использованием qbs может опережать make в разыmake быстр, если используется нерекурсивная система сборки - когда есть одно глобальное дерево зависимостей. Тогда время повторной пересборки крупного проекта, если ничего не менялось - менее секунды.
- Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..., anonymous, 20:34 , 28-Апр-15 (4) +1
- Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..., dismine, 21:10 , 28-Апр-15 (6) +1
- Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..., АнонимЪ, 22:20 , 28-Апр-15 (8)
- Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..., анонн, 22:52 , 28-Апр-15 (9)
- Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..., Аноним, 01:29 , 29-Апр-15 (12)
- Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..., Аноним, 07:38 , 29-Апр-15 (13) +1
- Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..., user, 12:38 , 29-Апр-15 (14)
- Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..., anon2, 19:50 , 29-Апр-15 (16)
> Кстати, какие сборочные инструменты нормально понимают генерацию сразу нескольких файлов? > Все реализации 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, 18:12 , 30-Апр-15 (18)
- Выпуск сборочного инструментария qbs 1.4.0, развиваемого про..., Аноним, 19:13 , 03-Май-15 (19)
|