Разширяване в променливи Make

Имам две променливи в моя Makefile:

archs = i386 x86_64
tarball = foo-i386 foo-x86_64

Както виждате, втората ми променлива всъщност е базирана на първата. Но искам нещо като разширение на регулярен израз, за ​​да използва първата променлива, като:

tarball = foo-$(archs)

Но не става по този начин. Това се разширява в GNU Make до:

tarball = foo-i386 x86_64

Какъв е най-добрият начин за присвояване на променливата tarball, която използва моята променлива archs?


person Fatih Arslan    schedule 04.10.2011    source източник


Отговори (1)


Когато можете да разчитате на GNU make, функцията foreach е ваш приятел.

Ако не, строителството

tarball = $(archs:%=foo-%)

работи и на някои други марки. Той обаче все още е в списъка с несъвместими функции.

person thiton    schedule 04.10.2011
comment
Няма ли функцията addprefix да бъде много по-лесна от foreach? - person eriktous; 04.10.2011
comment
@eriktous: Много зависи от вашето определение за много. Не си правя труда да запомня addprefix и addsuffix, тъй като $(foreach %,%-foo,) върши същата работа. - person thiton; 05.10.2011