各种目录中的先决条件

时间:2012-01-03 08:37:11

标签: makefile rule gnu-make

我有一个变量,其中包含不同目录中的先决条件列表,每个目录由相对路径指定。例如:

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) $<

1 个答案:

答案 0 :(得分:5)

使用vpath

vpath %.html $(dir $(HTML_FILES))

现在可以使用简单的模式规则如下:

$(XML_FILES): %.xml : %.html
    perl $(HTML_TO_XML) $<

这应该足以使事情有效,但是如果在../foo1/bar.html../foo2/bar.html等不同目录中存在一些具有相同名称的文件,我不确定它会如何表现。