模式规则有效:
$ ls
Makefile hello.txt world.txt
$ cat Makefile
all: hello.out world.out
%.out: %.txt
cp $< $@
$ make
cp hello.txt hello.out
cp world.txt world.out
但是,当我尝试用我认为是完全等效的后缀规则替换它们时,它们不起作用:
$ ls
Makefile hello.txt world.txt
$ cat Makefile
.POSIX:
.SUFFIXES:
.SUFFIXES:.txt.out
all: hello.out world.out
.txt.out:
cp $< $@
$ make
make: *** No rule to make target 'hello.out', needed by 'all'. Stop.
我不明白为什么。
答案 0 :(得分:1)
这是问题所在:
.SUFFIXES: .txt.out
它声明一个后缀.txt.out
,而不是两个。您可以将其更改为此:
.SUFFIXES: .txt .out