make 中所有目标的规则 - 即使文件存在

Rule for all targets in make - even if the file exists

我想创建一个 Makefile,无论给 make 的目标名称是什么,它都会输出 foo

所以所有这些都应该有效:

$ make
foo
$ make a
foo
$ make foobar
foo

以下 Makefile 几乎可以满足我的要求:

all %:
    @echo foo

.PHONY: all

但是,如果存在与目标同名的文件,它将失败:

$ touch abc
$ make abc
make: `abc' is up to date.

由于 .PHONY 不接受模式规则,我不知道如何让 make 忽略每个文件。

怎么样:

all $(MAKECMDGOALS): ; @echo foo
.PHONY: all $(MAKECMDGOALS)