如何在GNU make中替换变量中的字符串?

时间:2013-10-07 23:21:12

标签: variables gnu-make

我有一个= abc def 12345 用foo替换12345 我可以做b = $(代表12345,foo,$(a)) 所以b = abc def foo 但我怎么能做一个= abc def foo?

1 个答案:

答案 0 :(得分:0)

当您使用=符号分配变量时,在读取变量时不会评估右侧。这些变量仅在规则中使用时进行评估。

当你把b = $(subst 12345, foo, $(a))字符串“$(subst 12345,foo,$(a))”实际保存在b变量中时。您可以看到执行a = $(subst 12345, foo, $(a))的问题 - $(a)的旧值完全丢失,并且a变量现在具有循环扩展。

在某些情况下,您确实可以使用现有定义重新分配变量:例如,使用+=附加到其值。但是,如果这不起作用,请尝试使用:=来分配变量。这将在阅读作业时评估右侧。然后,使用旧值的后续分配将使用已计算的新值覆盖该值。