【发布时间】:2018-12-01 01:54:19
【问题描述】:
在制作以下基本 makefile 时,我看到的行为让我觉得我缺少一些基本的东西:
define foo
var := $1
$(info var_value: [$(var)] vs value: [$1])
endef
all:
$(eval $(call foo,FIRST))
$(eval $(call foo,SECOND))
该 makefile 的输出如下:
var_value: [] vs value: [FIRST]
var_value: [FIRST] vs value: [SECOND]
make: `all' is up to date.
我的理解是var := $1 意味着 $1 中的任何值都会立即展开并设置为 var。
因此,我会(天真地)期望 var 的内容和实际值始终相等,但事实并非如此。谁能给我一个提示?
【问题讨论】:
标签: variables makefile variable-assignment expansion