2015-12-21 34 views
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的非便攜功能嗎?我需要關注使功能版本破壞這個功能嗎?

有沒有這個習語實際使用的例子?無法找到任何案例讓我懷疑是否有任何我錯過了,這是一個壞主意。

如果這不是一個壞主意,是否有任何特定的命名空間分隔符比其他更適合?

回答