遞迴擴充套件變數

定義遞迴擴充套件變數時,右側的內容按原樣儲存。如果存在變數引用,則儲存引用本身(而不是變數的值)。等待擴充套件變數引用,直到實際使用該變數。

x = hello
y = $(x)
# Both $(x) and $(y) will now yield "hello"
x = world
# Both $(x) and $(y) will now yield "world"

在此示例中,y 的定義是遞迴的。在 $(y) 擴充套件之前,對 $(x) 的引用不會擴充套件。這意味著每當 x 的值發生變化時,y 的值也會發生變化。

遞迴擴充套件變數是一個功能強大但容易被誤解的工具。它們可用於建立類似於模板或函式的構造,甚至可用於自動生成 makefile 的某些部分。它們也可能是難以除錯的問題的根源。注意在必要時僅使用遞迴擴充套件變數。