示例:
define a :=
abc := $$1
endef
$(eval $(call a,b))
变量abc
不是b
。据我所知,a
的值为abc := $1
,则调用将扩展至abc := b
为什么不能在简单的扩展变量上使用调用函数,这在GNU Make手册中没有提及。
一旦变量通过简单的扩展进行扩展,就不会再扩展。这就是:=
的全部内容。因此,最初定义变量时,将其设置为静态字符串abc := $1
。一旦完成,在扩展的上下文中出现多少次并不重要:它实际上不会再次更改。