Запишите текущую цель в Makefile - PullRequest
0 голосов
/ 13 июля 2011

В настоящее время у меня есть Makefile с правилом нескольких целей.Он записывает цель, а затем вызывает новую марку с этим набором целей.

Например,

$(LIST_OF_PRODUCTS) : 
     @echo Making $@
     @make build_product PRODUCT=$@

Выходной каталог и двоичный файл затем используют это имя продукта ..

Какзаписать цель, которая в настоящее время создается в многоцелевом правиле, без вызова нового экземпляра Make?

Я пытался:

$(LIST_OF_PRODUCTS) : PRODUCT := $@
$(LIST_OF_PRODUCTS) : build_product
      @echo Making $(PRODUCT) Done.

Но это не работает.

1 Ответ

0 голосов
/ 13 июля 2011

Лучшее, что я придумал, это метод GNU make template:

#
# Template for creating a target
define target-template
.PHONY : ${1}
${1} : TARGET_NAME:=${1}
${1} : check_target $$(OBJECTS)
endef

#
#Generate targets from template
$(foreach target,$(TARGET_LIST),$(eval $(call target-template,$(target))))

Однако это только подтолкнуло мою проблему в другом месте. Поскольку check_target вызывается только один раз, когда эти цели вызываются через группу?

E..g

all : target_a target_b
...