Могу ли я иметь более одного знака % в цели makefile?

Итак, у меня есть make-файл с целевой зависимостью вроде этой:

all: $(foreach lang, $(LANGS), $(foreach models,$(MODELS),targetName$(model).xml$(lang)))

и цель targetName выглядит так:

targetName%.xml%: MODEL\=% targetName.xml*

Но это не работает. Я получаю эту ошибку:

make[1]: *** No rule to make target `targetNameMYMODEL.xmlen', needed by `all'.  Stop.

, однако вызов «все» с жестко запрограммированным языком в цели targetName, как это работает:

all: $(foreach lang, $(LANGS), $(foreach models,$(MODELS),targetName$(model).xmlen))

и вызов «все» без языка либо в all, либо в targetName также работает нормально. Я думаю, что, возможно, Makefile не нравится иметь два знака процента в имени цели.

Кроме того, поскольку я как бы унаследовал этот make-файл, может ли кто-нибудь объяснить мне, что означает эта МОДЕЛЬ\=%? Есть еще одна цель, которая выглядит так: MODEL%: ;но я не уверен, что означает \=%.

Редактировать: Итак, для дальнейшего уточнения на основе этого ответа:

У меня есть список, скажем, из 5 моделей и список, скажем, из 5 языков, цель состоит в том, чтобы сгенерировать 25 файлов, по одному для каждой комбинации языков и моделей.

targetName%.xml target изначально собирал файл с именем targetName.xml, но теперь он мне нужен для создания чего-то вроде targetName.xml Вот почему мне понадобились два знака %.

Я просматриваю эти два списка с помощью вложенного foreach, как показано выше, но мне трудно передать эти переменные целевым объектам. Я попытался экспортировать языковую переменную из оператора foreach, я попытался поместить содержимое targetName%.xml в цикл for, чтобы перебирать языки там.Последнее не работает, потому что в части выполнения цикла есть команды Makefile (например, eval).

8
задан Atey1 14 June 2012 в 18:11
поделиться