Расширение в 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 и adduffix, поскольку $(foreach %,%-foo,) выполняет ту же работу. - person thiton; 05.10.2011