Ссылаясь на имя цели из списка предпосылок - PullRequest
0 голосов
/ 14 марта 2012

В Makefile я хотел бы сослаться на имя цели из списка предпосылок и создать что-то с ним. Что-то в форме:

%.foo: $(addsuffix .bar, $(DATA_%))
  @echo $<

Так что, предположим, у вас есть:

DATA_test = 1 2 3

Когда вы называете это как:

make test

Это расширится до:

1.bar 2.bar 3.bar

Это как-то возможно? Как лучше подходить к проблеме?

1 Ответ

1 голос
/ 14 марта 2012

Если ваша версия Make имеет вторичное расширение , это, вероятно, сработает (я не могу это проверить, потому что сегодня мне пригодилась только старая версия).

.SECONDEXPANSION:

%.foo: $$(addsuffix .bar, $$(DATA_$$*))
    @echo $^

Без этого я не вижу лучшего способа сделать это, чем это:

define FOO_RULE
$(1).foo: $(addsuffix .bar,$(DATA_$(1)))
endef

FOO_TYPES = test real whatever

$(foreach t,$(FOO_TYPES),$(eval $(call FOO_RULE,$(t))))

%.foo:
    @echo building $@ from $^
...