遞迴擴充套件變數
定義遞迴擴充套件變數時,右側的內容按原樣儲存。如果存在變數引用,則儲存引用本身(而不是變數的值)。等待擴充套件變數引用,直到實際使用該變數。
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 的某些部分。它們也可能是難以除錯的問題的根源。注意在必要時僅使用遞迴擴充套件變數。