我在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时,为什么会失败?
答案 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"