У меня есть немного более сложный Makefile с динамически сгенерированными целями, такими как:
COMPONENTS = foo bar lipsum
define TEST_template =
.PHONY: test-$(1)
test-$(1):
@echo test
endef
$(foreach cmpnt,$(COMPONENTS),$(eval $(call TEST_template,$(cmpnt))))
Но теперь я бы хотел добавить к этой цели переменную c, определяемую целью. С нединамическими c целями это работает хорошо:
test: VAR_ONE=1
test:
@echo "VAR_ONE=$(VAR_ONE)"
Но объединение этих двух не работает
COMPONENTS = foo bar lipsum
define TEST_template =
.PHONY: test2-$(1)
test2-$(1): VAR_ONE=1
test2-$(1):
@echo "test - VAR_ONE=$(VAR_ONE)"
endef
$(foreach cmpnt,$(COMPONENTS),$(eval $(call TEST_template,$(cmpnt))))
Теперь запущенный make test2-foo
возвращает test - VAR_ONE=
, так что кажется переменная не устанавливается.
Возможно ли это вообще? Я пытался достичь этого уже пару дней, но ничего не смог найти.