【问题标题】:node-gyp variable behaves differently when passed through command linenode-gyp 变量在通过命令行传递时表现不同
【发布时间】:2017-02-22 12:10:00
【问题描述】:

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

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

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

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

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

node-gyp rebuild --BASE_DIR=... --BOOST_DIR=C:\different\boost\dir\lib

为什么我通过命令行传入boost目录会失败?

【问题讨论】:

    标签: node.js node-gyp gyp


    【解决方案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"
    

    【讨论】:

      猜你喜欢
      • 2015-09-01
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-01
      相关资源
      最近更新 更多