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

Makefile make中所有目标的规则-即使文件存在,makefile,Makefile,我想创建一个Makefile,它输出foo,而不管make的目标名称是什么 因此,所有这些都应该起作用: $ make foo $ make a foo $ make foobar foo 但是,如果存在与目标同名的文件,则会失败: $ touch abc $ make abc make: `abc' is up to date. $touch abc $makeabc make:“abc”是最新的。 由于.PHONY不接受模式规则,我不知道如何让make忽略每个文件。怎么样: all $(MA

我想创建一个
Makefile
,它输出
foo
,而不管
make
的目标名称是什么

因此,所有这些都应该起作用:

$ make foo $ make a foo $ make foobar foo 但是,如果存在与目标同名的文件,则会失败:

$ touch abc $ make abc make: `abc' is up to date. $touch abc $makeabc make:“abc”是最新的。 由于
.PHONY
不接受模式规则,我不知道如何让
make
忽略每个文件。

怎么样:

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

FWIW语法
all%:
在GNU make的较新版本中无效;您必须使用旧版本。
all $(MAKECMDGOALS): ; @echo foo
.PHONY: all $(MAKECMDGOALS)