我的makefile的第一个版本
foreach($array as $key => $value){
$result_array_1[] = $key;
foreach($value as $ $val){
$result_array_2[] = $val;
}
}
我执行它并且它不起作用
func:
$(call exec-on-changed-file, "$$(DIR)")
define exec-on-changed-file
DIR=GOOD;echo $(1)
endef
我对这个makefile(括号与括号)进行了更改
$ make func
DIR=GOOD;echo "$(DIR)"
/bin/sh: 1: DIR: not found
我执行它并且它有效。
func:
$(call exec-on-changed-file, "$${DIR}")
define exec-on-changed-file
DIR=GOOD;echo $(1)
endef
你能解释一下为什么吗?
答案 0 :(得分:4)
正如您的输出所示,当您使用$$(DIR)
时,
shell看到$(DIR)
,这是运行命令 DIR
的有效shell语法,但不存在。
当您使用$${DIR}
时,shell会看到${DIR}
,这是变量 DIR
的有效shell语法。
$$
中的call
扩展为$
。