我试图与GYP玩游戏并且坚持定义"默认变量"
有2个文件(一个主文件,一个预期存储公共数据,包含在main中:
1)v_common.gypi:
{
'variables': {
'mymodule%': "blblblb",
'mymoduleLibs' : "<(mymodule)/Libs",
},
'target_defaults': {
},
}
2)mymodule.gyp
{
'variables':{
},
'includes': [
'v_common.gypi',
], # includes
'targets': [
{
'target_name': 'myModule',
'type': 'none',
'actions' : [
{
'action_name': 'create_libs_folder',
'inputs': ['one_file'],
'outputs':['blabla'],
'action': ['mkdir', '<(mymoduleLibs)'],
}
]
},
], # targets
}
符合我的期望:
mymodule 应该获得&#34; blblblb&#34;的价值(就以前在任何地方都没有定义),
然后我应该可以将它用于 mymoduleLibs的计算值
并且毕竟 mymoduleLibs 应该可以在 mymodule.gyp中使用
但是,我只是得到错误 mymodule 是&#34;未定义的变量&#34;。如果我像下面的例子中那样对mymodyle进行精确定义(withot百分号),一切正常。 :
'variables': {
'mymodule': "blblblb",
'mymoduleLibs' : "<(mymodule)/Libs",
}
任何想法?
答案 0 :(得分:1)
我发现了问题。它在这里描述https://groups.google.com/forum/?fromgroups#!topicsearchin/gyp-developer/default/gyp-developer/1EWXAXe-qWs
正确的workaroud是在sub-dict'变量'中定义默认变量:{...},因此在扩展其他变量之前会对它们进行评估,如下所示:
{
'variables': {
'variables': {
'mymodule%': "blblblb",
},
'mymoduleLibs' : "<(mymodule)/Libs",
},
'target_defaults': {
},
}