对多个子目录中包含的文件的Makefile依赖性

时间:2012-03-14 15:48:33

标签: makefile docbook

我正在使用docbook,并希望使用GNU Make进行构建。在我的顶级子目录中,我在顶级目录中有两个目录dochtml以及stylesheet.xsl。在doc中,有一个docbook文件和一个包含该docbook的xincludes的文件夹(例如article1.docbook和一个名为article1的目录,其中包含来自article1.docbook的所有xincludes)。像这样:

toplevel
|
|---doc
|    |-article1.docbook
|    |---article1
|    |    |
|    |    |---sect1.docbook
|    |    |---sect2.docbook
|    |
|    |-article2.docbook
|    |---article2
|    etc...
|
|---html
|    |
|    |---article1.html
|    |---article2.html
|
|---stylesheet.xsl

我想出了这个makefile。它根据需要构建html,但不知道子目录中的依赖项(例如,如果正在构建article1.docbook,则sect1.docbook,即使尚未修改article1.docbook):

XSL_HTML = stylesheet.xsl
HTML_OUT = html
DOCBOOK = $(wildcard doc/*.docbook)
HTML = $(patsubst doc/%.docbook,%.html,$(DOCBOOK))

all: $(addprefix html/, $(HTML))

html/%.html : doc/%.docbook
    xsltproc --xinclude \
        --stringparam root.filename '' \
        --output $@ $(XSL_HTML) $<

所以我需要添加一个像$(wildcard doc/%/*.docbook)这样的依赖项,这就是我被困住的地方。

0 个答案:

没有答案