Makefile 为什么可以';我使用'=';在GNU生成文件中定义之后?医生建议我可以

Makefile 为什么可以';我使用'=';在GNU生成文件中定义之后?医生建议我可以,makefile,gnu-make,Makefile,Gnu Make,我试图在GNU make中使用定义。在此测试生成文件上运行make时会回显“dummy”: 如果我删除=,则它会按照我的预期使用foo-bar出错 GNU make手册中有所有使用等号形式定义的示例。为什么我似乎忽略了这一点?GNU Make 3.82中引入了带赋值的定义,很可能您使用的是旧版本 但是,在最新版本中,define foo=与普通的define foo相同,只需使用后者即可在3.82之前的版本中使用 define FOO = $$(error foo $(1)) endef $(

我试图在GNU make中使用
定义
。在此测试生成文件上运行make时会回显“dummy”:

如果我删除
=
,则它会按照我的预期使用
foo-bar
出错


GNU make手册中有所有使用等号形式定义的示例。为什么我似乎忽略了这一点?GNU Make 3.82中引入了带赋值的定义,很可能您使用的是旧版本

但是,在最新版本中,define foo=
与普通的define foo
相同,只需使用后者即可在3.82之前的版本中使用

define FOO =
$$(error foo $(1))
endef

$(eval $(call FOO,bar))

all:
    @echo dummy