本博客不欢迎:各种镜像采集行为,请尊重知识产权法律法规。大家都是程序员,不要闹得不开心。

书接上文,node-gyp的参数里面有个--msvs_version,这个参数是最终成功编译成功的重点之一。其实,如果简单的说的话,目前的情形下,这个值直接设置为2015就可以满足要求了。那么,如果您想知道更多的详细信息,就可以继续阅读本文的内容,本文就是对--msvs_version=2015这个规则的展开发散说明。

苏南大叔:重新构建electron,node-gyp如何指定msvs_version参数? - gyp-msvs-version
重新构建electron,node-gyp如何指定msvs_version参数?(图4-1)

本文测试环境:win10/node@10.15.1/node-gyp@3.8.0/electron@1.7.11

背景提示

本文的技术背景是:正确安装了node-gyp所需要的cpp编译器。前置阅读文章是:

错误提示

MSBUILD : error MSB4132: 无法识别工具版本“2.0”。可用的工具版本为 "4.0"。

或者

MSBUILD : error MSB4132: 无法识别工具版本“2.0”。可用的工具版本为 "14.0","4.0"。

苏南大叔:重新构建electron,node-gyp如何指定msvs_version参数? - msbuild-version
重新构建electron,node-gyp如何指定msvs_version参数?(图4-2)

解决方案

设置node-gyp命令的参数,增加--msvs_version=2015字样即可,上述问题即可解决。不出意外的话,在一阵黄色警告信息翻滚之后,就可以编译成功了。

node-gyp --msvs_version=2015 ............

当然还是有其他参数的,为了突出显示参数--msvs_version=2015,其他的参数就暂时隐藏掉了。

特殊的msvs_version使用方式一

下面的是特殊使用方式,和普通的设置--msvs_version的方式,有些不同。

npm config set msvs_version 2015 --global
node-gyp rebuild --target=1.7.11 --arch=x64 --target_arch=x64 --dist-url=https://npm.taobao.org/mirrors/atom-shell

上面的两条命令就相当于下面的一条命令:

node-gyp rebuild --target=1.7.11 --arch=x64 --target_arch=x64 --dist-url=https://npm.taobao.org/mirrors/atom-shell --msvs_version=2015

上面的命令就是说,可以把msvs_version设置成全局的值,在后续的命令中,就不必再次指定了。

特殊的msvs_version使用方式二

如果是在package.json里面定义了ffi等依赖的话,

苏南大叔:重新构建electron,node-gyp如何指定msvs_version参数? - gyp-ffi
重新构建electron,node-gyp如何指定msvs_version参数?(图4-3)

那么安装命令的一个变形可能是:

npm i --msvs_version=2015

或者:

npm config set msvs_version 2015 --global
npm i

苏南大叔:重新构建electron,node-gyp如何指定msvs_version参数? - gyp-ffi-ref
重新构建electron,node-gyp如何指定msvs_version参数?(图4-4)

总结

本文说的似乎比较多,其实中心思想就一条:把msvs_version设置为2015即可。当然,这句话的前提也是你真正的安装好了cpp编译器。在将来的代码发展中,这个2015的字样,可能会变成2017/2020之类的字样,或者干脆消失不见,这都是有可能的。

点击下面的链接,了解更多有关node-gyp的文章吧:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。