node-gyp变量在通过命令行传递时表现不同

时间:2017-02-22 12:10:00

标签: node.js node-gyp gyp

我在gyp文件中定义了以下变量(期望BASE_DIR始终作为命令行参数传递):

def wr(self, line):
    ''' write line given to file'''
    self.f.write(line + '\n')

我将它用作msbuild链接器的库路径:

'variables': {
  "BOOST_DIR": "<@(BASE_DIR)/../../opt/boost_1_63_0/stage/lib"
},

只要我只通过命令行传入BASE_DIR,这就完全可以正常工作。但是当我想传递一个不同的BOOST_DIR时,链接器不再找到我的库了:

"VCLinkerTool": {
    ...
    "AdditionalLibraryDirectories": [
        "<@(BOOST_DIR)",
        ...
    ]
}

当我通过命令行传入boost directoy时,为什么会失败?

1 个答案:

答案 0 :(得分:1)

好的,通过查看Visual Studio中生成的.sln找到它自己。当我通过命令行传入变量时,生成的解决方案中缺少反斜杠:

/LIBPATH:"C:differentboostdirlib"

但是当我在使用之前更改路径时,就像在变量声明中一样,它似乎正常工作。

所以,我的解决方法是使用

'variables': {
  "BOOST_DIR": "<@(BASE_DIR)/../../opt/boost_1_63_0/stage"
},

然后使用以下代码定义库目录:

"VCLinkerTool": {
    ...
    "AdditionalLibraryDirectories": [
        "<@(BOOST_DIR)/lib",
        ...
    ]
}

那就是它:现在正确生成.sln中的LIBPATH:

/LIBPATH:"C:\different\boost\dir\lib"