作为构建的一部分,我正在处理产生多个HTML文件的DocBook文件(每章一个文件)。
我想对这些HTML文件进行后期处理并将其复制到别处。这些文件依赖于DocBook源代码,但我事先无法知道文件名(文件名也依赖于DocBook源代码)。
如果文件已经生成,我已经有了一些可行的规则:
www/manual/%.html: build/manual/%.html
postprocess "$<" "$@"
但我不知道怎么告诉make
生成它们,如果它们还没有。如果我只是为www/manual/index.html
添加规则,则只会对该文件进行后处理,而不是全部。
我想我需要makedepend
用于DocBook或者一些漂亮的通配符技巧。这是什么解决方案?
答案 0 :(得分:1)
我将盲目地假设GNU Make在这里;如果没有,类似的技术应该适用于略微改变的语法。
如果是我,我会使用类似于你的规则,可能还有wildcard function生成的文件列表
然后我将该规则放在一个单独的子文件called recursively
中也就是说,在你的主Makefile中,
build:
# do the docbook processing
$(MAKE) -f htmlprocessmakefile
Makefile将看到已创建的HTML文件的完整列表。
答案 1 :(得分:0)
您是否正在尝试编写一条规则,例如“如果manual
目录中根本没有文件,那么运行foo命令来生成它们”?
一个简单的可能性(一个黑客,因为我不知道高级的makefile使用,并且不建议花时间学习它)将用于指定的foo命令,不仅要创建你不知道的文件名提前,还要创建一个(可能是空的)文件,其文件名是您事先知道的,然后您可以将其用作标记是否已运行的标记。