下载depot_tools
环境1
- 下载并解压好depot_tools之后,把它的路径放在系统环境变量Path里面,并放在最上面一行
- 在环境变量里面不要有python的路径,至少不能放在depot_tools的前面
- 在系统变量里面添加:
DEPOT_TOOLS_WIN_TOOLCHAIN
值为0 - 在用户变量或系统变量里面添加:
vs2019_install
值为"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community"
环境2(第一次安装depot或者删除后重装depot)
- 在CMD(一定是CMD)里面,运行
gclient
- 第一次运行这个命令,它会下载需要的相关依赖,注意运行这个的时候需要开着梯子
代理
- aabb为端口号(比如开了clash之后,aabb可以是clash的端口号)
- 这里要注意一下,https_proxy等号后面的是http而不是https
- 记录:
lanhai
是设置到7890
my vps
是设置到1080
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# git git config --global http.proxy http://127.0.0.1:aabb git config --global https.proxy http://127.0.0.1:aabb # git cancel git config --global --unset http.proxy git config --global --unset https.proxy # glient的话 set https_proxy=http://localhost:aabb set http_proxy=http://localhost:aabb |
检查python
- 运行
where python3
- 如果显示的结果中,python.bat在任何python.exe的上面,那就没问题
- 如图
下载chromium代码
- 在一个想要存放代码的地方新建文件夹,最好是放在固态盘:
mkdir chromium && cd chromium
- 这一步就不再局限与CMD了,也可以用bash,但还是建议使用CMD
- 运行
fetch chromium
- 等它下,可能时间会比较久一点
- 下好之后,
cd src
,进入到src目录 - 运行
gn gen out\aet
生成构建相关项
关于生成构建
gn gen out\aet
将会在源码src目录下的out\aet下面会生成VS工程的相关配置- 但是直接使用上述不带参数的命令生成的内容,将会非常巨大,我现在这个时间节对应的chromium版本生成的VS大概会有9000多个项目在里面,我3900X,32G内存,再使用了vschromium插件之后,光打开项目会花很久时间,然后VS奔溃掉,重启了。
- 我的自定义要加载的命令如下:
1 2 |
# 调试版本 gn gen --ide=vs2022 --args="is_component_build=true is_debug=true symbol_level=2 blink_symbol_level=2 v8_symbol_level=2 enable_nacl=false dcheck_always_on=true" --ninja-executable="Q:\google_code\chromium_136\src\third_party\ninja\ninja.exe" --filters="//base;//chrome;//ui/views;//third_party/blink/*;//v8;//cc;//content/*;//gpu;//services/*;//mojo;//net/*;//skia;//ui/gl;//services/network/*;//url;//testing" out\kernel-debug |
1 |
gn gen --ide=vs --args="is_component_build = true is_debug = true enable_nacl = false blink_symbol_level = 0 v8_symbol_level = 0" --ninja-executable=e:\CodeRepo_Google\BearBrowser\src\third_party\ninja\ninja.exe --filters=//base;//cc;//chrome;//content;//crypto;//dbus;//extensions;//gin;//gpu;//jingle;//ipc;//media;//mojo;//net;//skia;//sql;//testing;//third_party;//ui;//url;//v8 --no-deps out\aet |
1 |
gn gen --ide=vs2022 --args="is_component_build = true is_debug = true enable_nacl = false blink_symbol_level = 0 v8_symbol_level = 0" --ninja-executable=e:\CodeRepo_Google\qingyema\src\third_party\ninja\ninja.exe --filters=//base;//chrome;//ui/views --no-deps out\qingyema |
- 仅仅显示出部分想要加载到里面的项目
- 如果后续需要添加别的,只需要在上述命令里做修改,然后重新生成之后,VS会检测到变化,重新加载一下就可以了。
关于工程的参数指定
cd src
gn args out\aet
,打开args.gn文件- 部分参数内容可参考如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# Set build arguments here. See `gn help buildargs`. # 启用硬件编解码器 proprietary_codecs = true # 使用针对chrome构建的ffmpeg # ffmpeg_branding = "Chrome" # 增量编译 is_component_build = true # 调试模式 is_debug = true # 禁用Nacl的支持 enable_nacl = false # 表示禁用 Ash(Aura Shell)窗口管理器 use_ash = false # 构建的chrome中不包含远程桌面功能 enable_remoting = false # 启用打印预览 enable_print_preview = true # x86架构处理器 target_cpu = "x86" # 禁止了blink引擎的符号级别调试信息 blink_symbol_level = 0 # 禁止对pci库的使用 use_libpci = false |
编译
- 可以直接使用
autoninja -C out\aet chrome
编译所有内容- 调用ninja时指定chrome,可以避免构建许多测试二进制文件
- 但是如果这样做,一定要配置好才可以。因为多的情况下可能会需要编9万多个内容。经测试,12核24线程的3900X,32G内存,这样的环境下,前一天晚上花了3个小时编了三分之一,因电脑休眠了,第二天上午8点编到中午,可能可我的机器没装额外的散热有关系
- 也可以用只编译部分内容的方法,慢慢编。如下:
1 2 3 4 |
set NINJA_SUMMARIZE_BUILD=1 autoninja -C out\aet base //或者类似 autoninja -C out\aet chrome |
关于更新chromium/main
分支代码
1 2 3 4 5 |
# 切到main分支 # 更新主分支代码 git rebase-update # 将子存储库同步到适当版本,删除不再需要的版本 gclient sync -D |
关于更新depot_tools
- 更新这个
depot_tools
,要设置这个代理,不然会跑不动
1 2 |
set https_proxy=http://localhost:aabb set http_proxy=http://localhost:aabb |
遇到的问题
PATH_TO_INSTALLER.EXE
- 并不是在VS安装目录下找到
vs_installer.exe
或者setup.exe
- 而是一个大概1M左右的类似
vs_community.exe
的安装工具,下载路径如下: - 如果是要自定义安装路径
1 |
vs_enterprise.exe --installPath C:\minVS --add Microsoft.VisualStudio.Workload.CoreEditor |
- 如果是默认安装的情况
1 |
vs_Community.exe --add Microsoft.VisualStudio.Workload.NativeDesktop |
ninja不识别
ninja.exe
不是内部或外部命令,也不是可运行的程序- 这个问题是,在用
gn gen
生成sln工程的时候,没有指定--ninja-executable
导致的
failed to resolve infra/...
- 这个问题之前解决过,但是没有做记录,导致后面由遇到这个问题了,还不记得怎么解决。描述如下:
failed to resolve infra/...
prpc: sending request: Post "https://chrome-infra-packages.appspot.com/prpc/cipd.Repository/ResolveVersion"
- 解决如下设置:
1 |
set https_proxy=http://localhost:1080 |
命令 call xxx\ninja.exe xxx\ obj/chrome/chrome.stamp 已退出,代码1
- 原因是在
gn gen
生成VS工程的时候,拷贝的命令,没注意看,里面ninja.exe
的路径不对 - 看VS控制台输出的时候看得不够仔细,没注意到还有这一句
1 |
The system cannot find the path specified |
关于VsChromium
- 它会把所有符合配置的东西直接加载到内存中
- 这样对于如此庞大的一个项目而言,搜索东西起来就巨方便了
- 不过相应的就需要机器的内存大一些,可能光这个插件就要占用5到6个G内存
- 曾经别人建议我说内存他建议64G起步
- 我的VsChromium的配置如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[SourceExplorer.ignore] .git *.suo *.csproj *.vcxproj [SearchableFiles.ignore] *.git [SearchableFiles.include] *.c *.cc *.cpp *.h *.ini *.md *.txt *.json |
本文为原创文章,版权归Aet所有,欢迎分享本文,转载请保留出处!