在通过命令行传递时,node-gypvariables的行为有所不同
我在我的gyp文件中定义了以下variables(期望BASE_DIR始终作为命令行parameter passing):
'variables': { "BOOST_DIR": "<@(BASE_DIR)/../../opt/boost_1_63_0/stage/lib" },
我用它作为msbuild连接器的库path:
"VCLinkerTool": { ... "AdditionalLibraryDirectories": [ "<@(BOOST_DIR)", ... ] }
只要我只通过命令行通过BASE_DIR,这工作得很好。 但是当我想传递一个不同的BOOST_DIR时,链接器不再find我的库:
node-gyp rebuild --BASE_DIR=... --BOOST_DIR=C:\different\boost\dir\lib
为什么当我通过命令行传入boost directoy时会失败?
好的,通过在Visual Studio中查看生成的.sln来自己find它。 当我通过命令行传递variables时,生成的解决scheme中缺less反斜杠:
/LIBPATH:"C:differentboostdirlib"
但是当我在使用它之前改变path,就像在variables声明中一样,它似乎正常工作。
所以,我的解决方法是使用
'variables': { "BOOST_DIR": "<@(BASE_DIR)/../../opt/boost_1_63_0/stage" },
然后使用下面的代码来定义库目录:
"VCLinkerTool": { ... "AdditionalLibraryDirectories": [ "<@(BOOST_DIR)/lib", ... ] }
就是这样:现在,.sln中的LIBPATH正确生成了:
/LIBPATH:"C:\different\boost\dir\lib"