node-gyp 变量在通过命令行传递时表现不同
node-gyp variable behaves differently when passed through command line
我的 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目录失败?
好的,我自己通过查看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"
我的 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目录失败?
好的,我自己通过查看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"