Makefile 目标中的等号

Equal sign in Makefile target

在 Makefile 的目标名称中有等号的好方法吗?

如果我写一个 Makefile 像

test=file:
    touch test=file

我明白了

Makefile:2: *** recipe commences before first target.  Stop.

我发现解决这个问题的唯一方法是

NAME = test=file

$(NAME):
    touch test=file

这可行,但为每个文件名定义一个变量会有点麻烦。有没有更好的方法,直接 quoting/escaping =

除了使用变量来隐藏 = 别无他法。当然,您不必将整个文件名放在您可以使用的变量中:

EQ = =
test$(EQ)file: ; touch $@

或者,如果将其放入单字母变量中,则不需要 ():

E = =
test$Efile: ; touch $@

如果你愿意。