最初我的绑定文件只有一个目标,并且很好:
{
'targets': [
{
'target_name': 'target1',
'sources': [ 'source1.cc', 'source2.cc' ],
'cflags_cc!': [ '-fno-rtti', '-fno-exceptions' ],
'cflags!': [ '-fno-exceptions' ],
'conditions': [
#A very, very long condition
]
},
}
现在我需要另一个或多或少相同的目标,但是构建一个可执行文件而不是链接对象。如果我复制原始目标,那就没问题,但是我不想重复完全相同的condition
。我怎么能这样做?
E.g。我理想的bindin.gyp看起来有点像这样:
{
'conditions': [
#A very, very long condition
]
'targets': [
{
'target_name': 'target1',
'sources': [ 'source1.cc', 'source2.cc' ],
'cflags_cc!': [ '-fno-rtti', '-fno-exceptions' ],
'cflags!': [ '-fno-exceptions' ],
'conditions' : #Refer to the conditions stated above
},
{
'target_name': 'target2',
'type' : 'executable'
'sources': [ 'source1.cc', 'source3.cc' ],
'cflags_cc!': [ '-fno-rtti', '-fno-exceptions' ],
'cflags!': [ '-fno-exceptions' ],
'conditions' : #Refer to the conditions stated above
},
}
我尝试使用variables
,但node-gyp只允许使用string或list类型的变量,而'conditions'是associative array
答案 0 :(得分:0)
我不太确定,但是在猜测中,你可能能够将长条件数组放在第三个目标中,并依赖于其他两个目标中的条件目标。像这样:
{
'targets': [
{
'target_name': 'conditions_target',
'conditions': [
#A very, very long condition
]
},
{
'target_name': 'target1',
'sources': [ 'source1.cc', 'source2.cc' ],
'cflags_cc!': [ '-fno-rtti', '-fno-exceptions' ],
'cflags!': [ '-fno-exceptions' ],
'dependencies': [
'conditions_target',
],
},
{
'target_name': 'target2',
'type' : 'executable'
'sources': [ 'source1.cc', 'source3.cc' ],
'cflags_cc!': [ '-fno-rtti', '-fno-exceptions' ],
'cflags!': [ '-fno-exceptions' ],
'dependencies': [
'conditions_target',
],
},
}
但是我对node-gyp并不是很有经验,这可能会让事情变得更糟。 有关依赖关系的更多信息,请访问:https://gyp.gsrc.io/docs/UserDocumentation.md#Dependencies-between-targets