GNU Make:为什么调用函数不能用于简单的扩展变量? $1 未展开
GNU Make: why call function can't be used on simply expanded variables? $1 is not expanded
示例:
define a :=
abc := $
endef
$(eval $(call a,b))
变量 abc
不是 b
。据我所知,a
的值是 abc :=
,然后调用将扩展到 abc := b
为什么call函数不能用在简单扩展的变量上,这个在GNU Make手册中没有提到
一旦一个变量通过简单的扩展被扩展,它就再也不会扩展了。这就是 :=
的重点。因此,当最初定义变量时,它被设置为静态字符串 abc :=
。一旦完成,它在扩展上下文中出现多少次都没有关系:它实际上不会再次改变。
示例:
define a :=
abc := $
endef
$(eval $(call a,b))
变量 abc
不是 b
。据我所知,a
的值是 abc :=
,然后调用将扩展到 abc := b
为什么call函数不能用在简单扩展的变量上,这个在GNU Make手册中没有提到
一旦一个变量通过简单的扩展被扩展,它就再也不会扩展了。这就是 :=
的重点。因此,当最初定义变量时,它被设置为静态字符串 abc :=
。一旦完成,它在扩展上下文中出现多少次都没有关系:它实际上不会再次改变。