所以我有这样的目标依赖一个makefile:
all: $(foreach lang, $(LANGS), $(foreach models,$(MODELS),targetName$(model).xml$(lang)))
和目标名称目标看起来是这样的:
targetName%.xml%: MODEL\=% targetName.xml*
但是,这是行不通的。 我得到这个错误:
make[1]: *** No rule to make target `targetNameMYMODEL.xmlen', needed by `all'. Stop.
然而,呼吁“所有”与在目标名称目标的硬编码语言像这样的工作:
all: $(foreach lang, $(LANGS), $(foreach models,$(MODELS),targetName$(model).xmlen))
并呼吁“所有”没有全部或目标名称语言正常工作为好。 我想也许是Makefile文件不喜欢有目标名称的两个百分比符号。
此外,由于我有点继承了这个makefile文件,谁能告诉我这是什么型号\ =%手段? 还有另一个目标,看起来像这样: MODEL%: ;
但我不知道什么是\ =%表示。
编辑:那么进一步澄清在此基础上的回复:
我有,比方说,5种型号列表,并列表说5种语言,我们的目标是产生25个文件,一个是语言和模型的每个组合。
目标名称%.XML目标将原来建一个名为targetName.xml文件,但现在我需要它来建立类似targetName.xml这就是为什么我需要两个%的迹象。
我通过这两个列表以嵌套的foreach循环如上图所示,但我有一个很难周围路过那些变量的目标。 我试着从foreach语句输出语言变量,我试图把目标名称%.XML的内容在for循环遍历语言在那里。 后者不起作用,因为有在循环中的“做”部分生成文件命令(如EVAL例如)。