我有一个变量,其中包含不同目录中的先决条件列表,每个目录由相对路径指定。例如:
HTML_FILES := ../foo1/bar1.html ../foo1/bar2.html ../foo2/bar3.html foo3/bar4.html
(请注意,实际上已生成此变量,因此事先不知道文件夹的完整列表。)
对于其中的每一个,我想在当前目录中生成目标文件,例如bar1.xml, bar2.xml, bar3.xml, bar4.xml
。
如何编写符合此规则的规则?这就像我来的那样近。这似乎是魔术的地方??????可能会做到这一点。
build: $(XML_FILES)
$(XML_FILES): %.xml : ??????/%.html
perl $(HTML_TO_XML) $<
答案 0 :(得分:5)
使用vpath
。
vpath %.html $(dir $(HTML_FILES))
现在可以使用简单的模式规则如下:
$(XML_FILES): %.xml : %.html
perl $(HTML_TO_XML) $<
这应该足以使事情有效,但是如果在../foo1/bar.html
和../foo2/bar.html
等不同目录中存在一些具有相同名称的文件,我不确定它会如何表现。