我有 a = abc def 12345 用 foo 替换 12345 我可以做 b = $(subst 12345, foo, $(a)) 所以 b = abc def foo 但我怎么能做 a = abc def foo ?
问问题
4448 次
1 回答
1
当您使用=
符号分配变量时,在读取变量时不会评估右侧。只有在规则中使用此类变量时才会评估这些变量。
当你把b = $(subst 12345, foo, $(a))
字符串 "$(subst 12345, foo, $(a))" 实际上保存在 b 变量中。您可以看到这样做的问题a = $(subst 12345, foo, $(a))
- $(a) 的旧值完全丢失,并且 a 变量现在具有循环扩展。
在某些情况下,您确实可以使用现有定义重新分配变量:例如,使用+=
附加到其值。但是,当这不起作用时,请尝试使用:=
来分配您的变量。这将在阅读作业时评估右侧。然后使用旧值的后续分配将用已计算的新值覆盖该值。
于 2013-10-07T23:37:08.290 回答