我有一个= abc def 12345 用foo替换12345 我可以做b = $(代表12345,foo,$(a)) 所以b = abc def foo 但我怎么能做一个= abc def foo?
答案 0 :(得分:0)
当您使用=
符号分配变量时,在读取变量时不会评估右侧。这些变量仅在规则中使用时进行评估。
当你把b = $(subst 12345, foo, $(a))
字符串“$(subst 12345,foo,$(a))”实际保存在b变量中时。您可以看到执行a = $(subst 12345, foo, $(a))
的问题 - $(a)的旧值完全丢失,并且a变量现在具有循环扩展。
在某些情况下,您确实可以使用现有定义重新分配变量:例如,使用+=
附加到其值。但是,如果这不起作用,请尝试使用:=
来分配变量。这将在阅读作业时评估右侧。然后,使用旧值的后续分配将使用已计算的新值覆盖该值。