要编译chromium只能通过chromium提供的方法,但是坑的是这上面提供的方法不全,后期问题全靠Google才慢慢解决。chromium.github.com/上提供的源码也是不全的,能看就是不能编译
前期准备
你需要一个购买一个稳定的机场以及配置好的飞机
以下操作需要在开飞机以及开启全局代理的情况下进行,网络的稳定和机场的稳定决定了你是否能够正确下载源码和正常编译chromium的必要条件!
编译环境
我自己是在Windows 10 2004 下进行。系统配置i7 8700k 16G内存 500G硬盘。编译器版本2020/10/31最新的Visual Studio 2019 Community 16.7.7 。Windows 10 SDK 2004

下载depot_tools
点我下载depot_tools。这个下载后使用压缩包解压到硬盘中,为了防止其他影响解压到无中文路径目录下。我存储的是在L:\depot_tools中。
设置机器环境变量
将depot_tools文件夹目录添加到PATH环境中。如果你系统安装了python那么一定要将depot_tools目录设置在你安装的python目录之前。为了防止错误,最好是把“系统”和“用户”环境变量都给设置好。

创建一个新的环境变量DEPOT_TOOLS_WIN_TOOLCHAIN值为0。按照官方文档这个是为了“告诉depot_tools使用本地安装的Visual Studio版本(默认情况下,depot_tools将尝试使用google内部版本)。”。
设置完后不放心可以直接重启电脑!
执行gclient
上述配置好后使用cmd执行gclient命令,将会下载git和python。gclient需要下载chromium编译的python2.7以及编译脚本和对应的一些插件。默认的python都不行。一定要按照上面步骤配置好depot_tools以及稳定的飞机。
执行where python
使用cmd执行where python命令。再次确保gclient下载的python一定是在本机安装python的最上面。

下载源码之前配置git
为了防止意外下载源码路径最好不要有中文路径。按照官方的提示我直接把源码下载L分区目录下。以下操作都是在下载目录中使用git来进行操作.
$ git config –global user.name “My Name”
$ git config –global user.email “my-name@chromium.org”
$ git config –global core.autocrlf false
$ git config –global core.filemode false
$ git config –global branch.autosetuprebase always
$ mkdir chromium
$ cd chromium
我准备直接把源码下载L分区目录下使用git执行完上面的命令后git当前目录会指向L:\chromium\文件目录下。到这步git窗口已经没用了。可以直接关掉了。
开始下载chromium源码
启动CMD.exe并且指向L:\chromium\目录。执行命令“fetch –no-history chromium”开始下载源码。如果网络波动大或者机场不稳定很影响下载源码。
遇见问题一
执行上述命令会发现产生文件目录L:\chromium\_gclient_src_uoqesvkc,这个文件一定是表示正在下载chromium源码当中。如果下载成功会自动把_gclient_src_uoqesvkc文件夹修改为src。如果没有修改要么就是正在下载中,要么就是下载失败。这种情况,耐心等待并且祈祷网络稳定以及机场稳定。
遇见问题二
[0:36:42] Still working on:
[0:36:42] src/third_party/angle
使用命令后CMD一直显示这种情况直接使用控制台CTRL+Z中断掉没关系,再怎么等也不会正常下载src/third_party/angle。
使用gclient sync命令继续更新下载
CTRL+Z终端后不要关闭CMD,直接使用gclient sync命令更新内容。当更新成功后CMD会回显“Running hooks: 100% (101/101), done.”出现这种情况,恭喜下载chromium源码已经成功,基本完成了60%。
哪怕成功多执行几次gclient sync也没关系,因为后期编译需要的辅助工具也是需要通过gclient sync来进行更新。
参考来源
https://bugs.chromium.org/p/chromium/issues/detail?id=247222
设置构建信息
源码下载成功目录一定会修改为src。使用cmd切换到src目录下。执行命令【gn gen –ide=vs –target_cpu=”x86″ out\Default –args=”is_debug = true symbol_level = 2 enable_nacl = false blink_symbol_level = 0″】。
这条命令大致意思是生成vs的all.sln。以及编译环境为debug模式,并且生成的版本为X86版本。
遇见问题一
File “L:/chromium/src/build/compute_build_timestamp.py”, line 126, in <module> gn error
遇见这种问题CMD切换到L:\chromium\src\build\util目录下执行命令:【python lastchange.py -o LASTCHANGE】。执行后完毕后可以再次尝试执行【gclient sync】反正这个命令执行多次不影响其他。
重新执行构建命令
上面问题解决后重新切回L:\chromium\src目录并且把L:\chromium\sr\out目录直接删除后再次执行【gn gen –ide=vs –target_cpu=”x86″ out\Default –args=”is_debug = true symbol_level = 2 enable_nacl = false blink_symbol_level = 0″】应该就不会有问题了。

参考来源
https://www.magpcss.org/ceforum/viewtopic.php?f=6&t=16292
遇见问题二
ninja: Entering directory `out/Default’
ninja: error:xxxxxxxxxxxxx
重新执行【gclient sync】命令。
参考来源
https://groups.google.com/a/chromium.org/g/chromium-dev/c/tQGuR7Ur0i8
编译chromium
上述都成功后就可以开始编译chromium了。CMD切换到L:\chromium\src执行命令【autoninja -C out\Default chrome】后只需要等待即可。

最后
因为我编译的是chromium Debug版本,并且需要符号信息,所以编译的很慢,大概从下午三点一直编译到五点半结束终于成功编译出来了。

不过gn生成的all.sln 8000多个工程真心打不开。。。。。。

发表评论