electron 01 编译 (vs2017 windows10)

01 环境

按照官网说明
http://electronjs.org/docs/development/build-instructions-windows
需要安装
Visual Studio 2017
Python 2.7
Node.js
Git

如果编译libchromiumcontent,要下载chromium源码。需要vpn。参考
https://blog.csdn.net/longji/article/details/54632083

配置环境变量

:: electron3.0.0以后,可以使用vs2017。
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_MSVS_VERSION=2017
set GYP_MSVS_OVERRIDE_PATH=D:\install\Microsoft Visual Studio\2017\Community
LIBCHROMIUMCONTENT_GIT_CACHE=D:\git\libchromiumcontent_git_cache
set vs2017_install=D:\install\Microsoft Visual Studio\2017\Community

##02 编译electron
###02.01 代码下载

:: 代码下载比较快
git clone https://github.com/electron/electron.git
cd electron
:: 迁出最新的相对稳定版本, tag:v3.0.0,目前稳定版本是3.0.0(git tag)
git checkout -b b3.0.0 v3.0.0

Bootstrap 脚本也是必须下载的构建依赖,来创建项目文件. 需要注意的是我们使用ninja创建 Electron,这样的话就不需要生成 Visual Studio 项目了。

:: 如果本地有多个python环境,把python2.7的环境变量设置到最前面
:: 
set PATH=C:\python\Python27;C:\python\Python27\Scripts;%PATH%
cd electron
# 因为这个bootstrap.py是带.py后缀的,所以前面不带python也可以。
# script\bootstrap.py -v 的运行时间稍微长一下,要下载vendor依赖。这个命令会生成 ./out目录
python script\bootstrap.py -v --target_arch=x64
# 为了生产vs工程,带--msvs 不会生成.\out目录,只会生成msvs的项目文件和.sln文件
# python script\bootstrap.py -v --msvs

这个过程会下载electron的node_modules 和libchromiumcontent.tar.bz2,libchromiumcontent-static.tar.bz2 压缩包(较大:2.3GB,包含libchromiumcontent的编译静态库和动态库)。
libchromiumcontent.tar.bz2解压到 electron\vendor\download\libchromiumcontent\shared_library。
libchromiumcontent-static.tar.bz2解压到 electron\vendor\download\libchromiumcontent\static_library。
带 --msvs,会多下载 directxsdk-x64,解压到 electron\external_binaries。

02.02 编译celectron

:: 构建 Release 和 Debug 目标:先编译Release目标,再编译Debug目标。
:: 默认是先编译 out\R,在编译 out\D;
:: 最后link electron.exe 的时间比较长: [1232/1232] LINK_EMBED electron.exe
python script\build.py

如果指定输出路径,最好修改一下script\build.py。把config[0]修改为config。
这样用python script\build.py -c subdir的形式指定subdir.最终的结果会输出到out\subdir下。

build_path = os.path.join('out', config[0])
:: 修改为
build_path = os.path.join('out', config)
:: 如下命令,会使用ninja编译目标Debug_x64
python script\build.py -c Debug_x64
:: 可以指定编译版本--target_arch=ia32 或 --target_arch=x64
:: 如果不是实验性质,建议一定带上--target_arch=ia32或x64,并且代码下载到不同目录。
:: 避免切换不同版本时,下载静态库或者动态库,或者指定 --dev
script\bootstrap.py -v --target_arch=ia32

清理
执行清理动作一定要确认确实要清理,重新编译一遍蛮耗时的。

:: 清理构建文件:(慎用!!!,慎用!!!)
npm run clean
:: 清理 out 和 dist 目录:
npm run clean-build

03 编译 libchromiumcontent

参考 : http://www.cnblogs.com/diligenceday/p/9279234.html
使用已经下载的chromium代码。避免重复下载

libchromiumcontent编译需要下载chromium源码。如果已经下载完整版本的chromium,可以把完正的chromium\src拷贝到electron\vendor\libchromiumcontent目录下。

官网说明文档:https://electronjs.org/docs/development/upgrading-chromium

03.01 获取代码

# **因为前面下载electron代码,已经下载了libchromiumcontent。所以不用执行代码获取。
# **如果要向独立换个目录,那就重新获取一下。
# 官网说明里,使用git协议获取,需要公钥
# git clone git@github.com:electron/libchromiumcontent.git
# 这里修改为https协议获取
git clone https://github.com/electron/libchromiumcontent.git
cd libchromiumcontent
git checkout -b belectron-3.0.0 electron-3.0.0
python script\bootstrap -v --msvs

03.02 指定更新的chromium源码版本

访问 https://omahaproxy.appspot.com/,查看自己想要的chromium版本。目前稳定版本68.0.3440.106。这里使用68.0.3440.106。
手动修改electron\vendor\libchromiumcontent\VERSION里的版本号为68.0.3440.106,保存即可。

03.03 下载chromium代码

采用10MB的vpn大约需要3.5小时。vpn搭建参考https://blog.csdn.net/longji/article/details/54632083。vpn扩充带宽,从2MB扩充到10MB,目前腾讯cvm 1天大17.5元。
运行更新语句:

python script\update

如果已经有下载好的chromium代码,直接拷贝到electron\vendor\libchromiumcontent目录即可。只拷贝src目录全部到libchromiumcontent目录内即可。

04 注意事项

对于ia32和x64的版本,建议分成完全不同的两个目录存放,而不是做分支切换,他们的依赖完全不同,每次切换后更新这些东西很耗时。

npm run clean-build
script\bootstrap.py -v --target_arch=ia32
script\bootstrap.py -d --build_release_libcc
script\build.py -c R
script\create-dist.py --chromium_dir="D:\\git\\electron_ia32\\vendor\\libchromiumcontent\\dist\\main\\static_library"

npm run clean-build
script\bootstrap.py -v --target_arch=x64
script\bootstrap.py -d --build_release_libcc
script\build.py -c R
script\create-dist.py --chromium_dir="D:\\git\\electron_x64\\vendor\\libchromiumcontent\\dist\\main\\static_library"

参考语句:

# 本地编译nodejs扩展时使用
set PATH=C:\python\Python27;C:\python\Python27\Scripts;%PATH%
node-gyp rebuild --target=3.0.0 --arch=x64 --dist-url=https://atom.io/download/electron --msvs_version=2017
node-gyp rebuild --target=3.0.0 --arch=ia32 --dist-url=https://atom.io/download/electron --msvs_version=2017

node-gyp install --target=3.0.0 --arch=x64 --dist-url=https://atom.io/download/electron --msvs_version=2017
node-gyp install --target=3.0.0 --arch=ia32 --dist-url=https://atom.io/download/electron --msvs_version=2017

# 安装到全局不行
npm install -g ev-emitter jquery draggabilly --save

# 只要安装到本地才可以
npm install ev-emitter jquery draggabilly --save
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值