我的 GNU Makefile 中有这样的规则:
FITXER = fitxa.md
$(FITXER).html: $(FITXER)
pandoc --from markdown --to html $(FITXER) -o $(FITXER).html
$(FITXER).jpeg: $(FITXER).html
wkhtmltoimage $(FITXER).html $(FITXER).jpeg
有什么方法可以在文件列表中应用此规则:例如类似的东西(以伪代码):
for FITXER in [fitxa.md, a.md, b.md, ...] do
$(FITXER).html: $(FITXER)
pandoc --from markdown --to html $(FITXER) -o $(FITXER).html
$(FITXER).jpeg: $(FITXER).html
wkhtmltoimage $(FITXER).html $(FITXER).jpeg
endfor
答案1
解决这个问题的方法是定义一般构建规则:
%.html: %.md
pandoc --from markdown --to html $< -o $@
%.jpg: %.html
wkhtmltoimage $< $@
这讲述了make
如何从 Markdown 文件创建 HTML 文件,以及如何从 HTML 文件创建 JPEG。
一旦你做到了这一点,所需要的就是告诉make
所有输出您正在寻找的文件:
all: fitxa.jpg a.jpg b.jpg
.PHONY: all
make all
将弄清楚如何获取所请求的 JPEG 文件。
您仍然可以定义其他规则以不同的方式处理特定的 Markdown 文件:
foo.jpg: foo.md
# Process foo.md here to build foo.jpg
这些特定规则优先于通用规则。