想象一个包含多个 Markdown 文件的目录树(可能超过一层深)。每个文件的 PDF 版本都存在于同一目录中,并且每次更新相应的 Markdown 文件时都必须更新。为了实现这一点,必须在该树的根目录中的单个 Makefile 中编写什么规则?
我正在寻找一种解决方案,可以在目录树中添加或删除文件,而无需更新 Makefile。
假设:
- 所有 Markdown 文件的名称都遵循特定的模式;例如,它们以 .md 后缀结尾。
- 正在使用 GNU Make。
最佳答案
您可以使用$(shell find)
递归查找文件。例如:
markdown := $(shell find . -name '*.md')
all: $(patsubst %.md, %.pdf, $(markdown))
%.pdf: %.md
pandoc -o $@ $<
关于makefile - 如何为目录树中某种类型的文件编写Make规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36246713/