如何在目录树中为特定类型的文件编写Make规则?

时间:2016-03-27 11:18:02

标签: makefile gnu-make

想象一下包含多个Markdown文件的目录树(可能超过一层)。每个文件的PDF版本存在于同一目录中,每次更新相应的Markdown文件时都必须更新。必须在此树的根目录中的单个Makefile中写入什么规则才能实现此目的?

我正在寻找一种解决方案,可以在目录树中添加或删除文件,而无需更新Makefile。

假设:

  • 所有降价文件都遵循其名称中的某种模式;例如,它们以.md后缀结尾。
  • 正在使用GNU Make。

1 个答案:

答案 0 :(得分:2)

您可以使用$(shell find)递归查找文件。例如:

markdown := $(shell find . -name '*.md')

all: $(patsubst %.md, %.pdf, $(markdown))

%.pdf: %.md
    pandoc -o $@ $<