makefile - 如何为目录树中某种类型的文件编写Make规则?

标签 makefile gnu-make

想象一个包含多个 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/

相关文章:

c++ - 使用 g++ 在 Windows 上生成文件,链接库

c - 如何在 Windows 上编译 C 完美最小哈希库?

c - 使用 makefile 将目标文件放入新目录时遇到问题

makefile - GNU make 通配符不再提供排序输出。有控制开关吗?

创建一个通用的 makefile

c++ - Makefile 不评估 OBJECTS 变量

gcc - Phusion 乘客 Ubuntu 11.10

c++ - 非常非常基本 : Why won't my makefile work

makefile - 当 make 不需要做任何事情时,我如何关闭它?

makefile - 您如何为包含模式先决条件的 makefile 模式规则定义特定于模式的变量?