下面是具体的步骤(本文中文件的主目录位于D:\0.65.1):
步骤一:
安装depot_tools,并将depot_tools目录添加到系统变量PATH中去(本文中用到的版本是2022-06-26,网盘中有下载),系统环境变量的配置参考下图。
步骤二:
执行下面的代码来同步nwjs代码(一行一行执行)
set DEPOT_TOOLS_UPDATE=0
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_MSVS_VERSION=2019
set GYP_MSVS_OVERRIDE_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise
gclient config --name=src https://github.com/nwjs/chromium.src.git@origin/nw65 -- 生成nwjs代码配置文件
git checkout -f origin/nw65 -- 提取代码
步骤三:
手动下载下列代码库文件并切换到指定的版本到指定的目录下去:
git clone -b nw65 https://github.com/nwjs/nw.js.git --下载到src/content/nw
git clone -b nw65 https://github.com/nwjs/node.git --下载到src/third_party/node-nw
git clone -b nw65 https://github.com/nwjs/v8.git --下载到src/v8
步骤四、
安装win10 SDK 10.0.20348(需完整安装),然后进入D:\0.65.1目录执行下面命令同步代码
gclient sync --with_branch_heads --with_tags
步骤五、
进入src目录,执行下面命令生成ninja编译工程
调用chromium\src> gn gen 将会在指定目录生成编译工程,out/nw目录
名称不能修改,否则生成的文件编译的时候会有问题。
------------生成MT模式
gn gen out/nw --ide=vs --sln=nw "--args=is_component_build=false is_debug=true target_cpu=\"x86\"" -- 32位Debug MT VS86D_MT
gn gen out/nw --ide=vs --sln=nw "--args=is_component_build=false is_debug=false target_cpu=\"x86\"" -- 32位Release MT VS86R_MT
gn gen out/nw --ide=vs --sln=nw "--args=is_component_build=false is_debug=true target_cpu=\"x64\"" -- 64位Debug MT VS64D_MT
gn gen out/nw --ide=vs --sln=nw "--args=is_component_build=false is_debug=false target_cpu=\"x64\"" -- 64位Release MT VS64R_MT
------------生成MD模式
gn gen out/nw --ide=vs --sln=nw "--args=is_component_build=true is_debug=true target_cpu=\"x86\"" -- 生成32位Debug MD VS86D_MD
gn gen out/nw --ide=vs --sln=nw "--args=is_component_build=true is_debug=false target_cpu=\"x86\"" -- 生成32位Release MD VS86R_MD
gn gen out/nw --ide=vs --sln=nw "--args=is_component_build=true is_debug=true target_cpu=\"x64\"" -- 生成64位Debug MD VS64D_MD
gn gen out/nw --ide=vs --sln=nw "--args=is_component_build=true is_debug=false target_cpu=\"x64\"" -- 生成64位Release MD VS64R_MD
- 如果采用上面的方法生成解决方案以后,需要修改工程配置再生成解决方案,可以按下面方法无需.git生成解决方案:
如果需要修改工程配置,只需要删除out\VSXXX_XX目录下除args.gn以外的所有文件,然后修改args.gn配置参数。
最后进入src目录,修改要编译的版本目录名称为out/nw,执行下面的命令即可:
gn gen out\nw --ide=vs --sln=nw
-----------生成Node编译工程
set GYP_CHROMIUM_NO_ACTION=0
set GYP_MSVS_VERSION=2017 -- 用2019生成解决方案会失败
set GYP_DEFINES="target_arch=x64 is_component_build=false" -- 生成MT版本(x86或x64)
//set GYP_DEFINES="target_arch=x64 is_component_build=true" -- 生成MD版本(x86或x64)
python ./build/gyp_chromium -I third_party/node-nw/common.gypi -D building_nw=1 -D clang=1 third_party/node-nw/node.gyp -- 生成MT版本
//python ./build/gyp_chromium -D component=shared_library -I third_party/node-nw/common.gypi -D building_nw=1 -D clang=1 third_party/node-nw/node.gyp -- 生成MD版本
步骤六、
----------编译Chromium
修改要编译的版本目录名称为out/nw,然后进入src目录,
调用chromium\src> ninja -C out<out dir>, 开始编译,命令如下(编译需要很长时间,根据CPU的性能而定):
ninja -C out/nw nwjs
----------编译Node
命令如下:
ninja -C out/Release node
----------编译完成后执行下面的命令将Node拷贝到nwjs目录
命令如下:
ninja -C out/nw copy_node
到此,整个编译过程完成。
#######################编译后的运行截图#######################
#######################常用命令总结#######################
下面是一次性生产所有版本的批处理
gn gen out/nw --ide=vs --sln=nw "--args=is_component_build=false is_debug=false target_cpu=\"x86\"" -- 32位Release MT VS86R_MT
gn gen out/nw --ide=vs --sln=nw "--args=is_component_build=false is_debug=false target_cpu=\"x64\"" -- 64位Release MT VS64R_MT
gn gen out/nw --ide=vs --sln=nw "--args=is_component_build=true is_debug=true target_cpu=\"x86\"" -- 32位Debug MD VS86D_MD
gn gen out/nw --ide=vs --sln=nw "--args=is_component_build=true is_debug=false target_cpu=\"x86\"" -- 32位Release MD VS86R_MD
gn gen out/nw --ide=vs --sln=nw "--args=is_component_build=true is_debug=true target_cpu=\"x64\"" -- 64位Debug MD VS64D_MD
gn gen out/nw --ide=vs --sln=nw "--args=is_component_build=true is_debug=false target_cpu=\"x64\"" -- 64位Release MD VS64R_MD
#######################代码压缩包怎么编译#######################
如果要编译,将整个文件夹解压到D盘,然后将文件夹修改成0.65.1
然后进入0.65.1\src目录,执行ninja -C out\nw就可以了(修改out目录中要编译的版本目录为out/nw)
##################编译过程中遇到的错误及解决法####################
content\nw\src\api目录下的*.idl文件在编译的过程中会出现编译错误,
产生错误的原因是因为文件的编码格式不符合linux文件标准,需要用工具转换一下,请到网盘下载工具(dos2unix.exe和convert.bat),然后将这两个工具放置到content\nw\src\api目录,执行一下convert.bat,然后再编译即可。
由于国内没有VPN无法下载全部代码,现将编译过程中需要的工具和代码通过网盘共享给大家:
链接:https://pan.baidu.com/s/1pG0Esv-atH48GO-PE7WlTA
提取码:bx9b