我在目录中有一堆文本文件help_pages/
,全部以 reST 格式。我正在尝试向我的 GNU 添加Makefile
一些规则:
help_pages
通过一个应用程序运行扩展名为“.rst”的目录(和子目录)中的每个文件,该应用程序会输出一个有效的 html 文件(现在我只是在使用rst2html
)。- 将这些输出 html 文件复制到目标目录,再现目录中存在的目录结构
help_pages
。
因此,例如,help_pages/some/dir/foo.rst
首先会被翻译成help_pages/some/dir/foo.html
,然后复制到public/help/some/dir/foo.html
。
我花了一整天的时间试图学习 Makefile 的内部结构,但最后我放弃了。这是我已经拥有的:
# Directory that the .rst files reside in:
HELP_DIR=help_pages
# use 'find' to locate all such files:
HELP_SRCS=$(shell find $(HELP_DIR) -name "*.rst")
# work out what path the intermediate files would be
HELP_TARGETS=$(HELP_SRCS:.rst=.html)
# do the translation.
$(HELP_TARGETS): %.html: %.rst
rst2html $< $@
help: $(HELP_TARGETS)
.phony:
help
这种工作 - .rst 文件被翻译成 .html 文件,但我不知道如何将它们安装到最终的目标目录中。如果我cp
向主构建配方添加命令,如果目标目录中不存在这些文件,则不会重新安装它们。
理想情况下,我想要一个目标来制作帮助文件,一个来安装它们,第三个(称为“帮助”)取决于这两个。我认为这会给我最大的灵活性。
谁能给我一些关于如何实现这一目标的提示?
干杯,