2015-12-21 21 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的非便携功能吗?我需要关注使功能版本破坏这个功能吗?

有没有这个习语实际使用的例子?无法找到任何案例让我怀疑是否有任何我错过了,这是一个坏主意。

如果这不是一个坏主意,是否有任何特定的命名空间分隔符比其他更适合?

回答