0

作为构建的一部分,我正在处理生成多个 HTML 文件(每章一个文件)的 DocBook 文件。

我想对这些 HTML 文件进行后处理并将它们复制到其他地方。这些文件取决于 DocBook 源,但我无法提前知道文件名(文件名也取决于 DocBook 源)。

如果文件已经生成,我有规则可以工作:

www/manual/%.html: build/manual/%.html
   postprocess "$<" "$@"

但我不知道如何make生成它们,如果它们还没有的话。如果我只是添加规则www/manual/index.html,则只有该文件得到后处理,而不是全部。

我想我需要makedependDocBook 或者一些漂亮的通配符技巧。解决方案是什么?

4

2 回答 2

1

我将在这里盲目地假设 GNU Make。如果没有,类似的技术应该适用于稍微改变的语法。

如果是我,我会使用类似于您上面的规则,可能使用通配符函数生成的文件列表

然后我将该规则放在一个单独的子makefile中,递归调用

也就是说,在您的主 Makefile 中,


  build:
    # do the docbook processing
    $(MAKE) -f htmlprocessmakefile

Makefile 将看到已创建的 HTML 文件的完整列表。

于 2009-06-15T01:50:07.713 回答
0

您是否正在尝试编写诸如“如果目录中根本没有文件,manual则运行 foo 命令来生成它们”之类的规则?

一个简单的可能性(一个 hack,因为我不知道高级 makefile 的用法并且不建议花费时间不必要地学习它)是指定的 foo 命令不仅可以创建您事先不知道的文件名,还可以创建一个(可能是空的)文件,其文件名您事先知道,然后您可以将其用作规则是否已运行的标记。

于 2009-06-14T02:44:55.360 回答