0
我的想法是使用計算機名來模擬命名空間,例如:makefile中使用計算機名來模擬命名空間(FX目標本地)
GetVar = $(or $([email protected]$1),$($2))
[email protected] = foo bar
frob = baz
$(info $(call GetVar,namespace,fubar))
$(info $(call GetVar,namespace,frob))
而且這可能在規則中曾經有目標局部變量
[email protected] = echo hello
target:
$(call GetVar,[email protected],cmd)
這似乎在GNU的化妝工作,但它提出了幾個問題:
首先,這將導致變量名稱中使用非正常字符。當然可以使用另一個除@
以外的分隔符,但是在使用目標名稱作爲名稱空間名稱時,您將不可避免地遇到點和斜線以變量名稱結尾的情況。這有多糟糕? GNU-make手冊告訴我要避免這種情況,並提到能夠通過這種環境共享這個子組件,但這是一個非遞歸的makefile設置。
這是利用GNU-make的非便攜功能嗎?我需要關注使功能版本破壞這個功能嗎?
有沒有這個習語實際使用的例子?無法找到任何案例讓我懷疑是否有任何我錯過了,這是一個壞主意。
如果這不是一個壞主意,是否有任何特定的命名空間分隔符比其他更適合?