我正在使用docbook,并希望使用GNU Make进行构建。在我的顶级子目录中,我在顶级目录中有两个目录doc
和html
以及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)
这样的依赖项,这就是我被困住的地方。