我有 = abc def 12345 将 12345 替换为 foo 我可以做 b = $(subst 12345, foo, $(a)) 所以 b = abc def foo 但我怎样才能制作 a = abc def foo ?
当您使用
=
符号分配变量时,读取变量时不会评估右侧。这些变量仅在规则中使用时才会被评估。
当您输入
b = $(subst 12345, foo, $(a))
时,字符串“$(subst 12345, foo, $(a))”实际上保存在 b 变量中。您可以看到执行 a = $(subst 12345, foo, $(a))
的问题 - $(a) 的旧值完全丢失,并且 a 变量现在具有循环扩展。
在某些情况下,您确实可以使用现有定义重新分配变量:例如,使用
+=
附加到其值。但是,当这不起作用时,请尝试使用 :=
来分配变量。这将在阅读作业时评估右侧。然后,稍后使用旧值的分配将用已计算的新值覆盖该值。
PROJECT_NAME = $(notdir $(subst .,_,$(PWD)))
export PROJECT_NAME