如何在目标和先决条件中描述多个文件

时间:2015-12-11 05:50:25

标签: makefile pattern-matching

在make中,如何使用通配符%来描述目标和先决条件中的多个文件?

%.1: %.md
    for f in $?; do ...; done

我认为以上是触发规则为自上次运行以来修改过的任何*.1创建*.md文件的方法,但显示了这一点:

make: *** No targets.  Stop.

1 个答案:

答案 0 :(得分:1)

你的规则是说“如果你需要制作.1,如果你有.md,这是怎么做”,你没有要求make做任何.1。您可能还需要:

SOURCES=$(wildcard *.md)

all: $(SOURCES:%.md=%.1)

%.1: %.md
    echo $@

请注意,*%相似(它们代表未指定的字符),但在检查字符串时会出现在不同的上下文中*以查找现有文件% - 字符串通常是文件名的一部分,但这不是强制性的,你可以使用它来匹配实用程序的参数)