Предпосылки в разных каталогах - PullRequest
2 голосов
/ 03 января 2012

У меня есть переменная со списком предпосылок в разных каталогах, каждая из которых указана относительным путем. Например:

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 Ответ

5 голосов
/ 03 января 2012

Использование vpath.

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

Теперь можно использовать простое шаблонное правило следующим образом:

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

Этого должно быть достаточно, чтобы все заработало, но я не уверен, как он будет себя вести, если в разных каталогах есть файлы с одинаковыми именами, например ../foo1/bar.html и ../foo2/bar.html.

...