https://chromium.googlesource.com/chromium/src/+/main/docs/windows_build_instructions.md
硬件&软件配置
系统需求:
vs2019 需求: 最好默认路径,减少麻烦。
- 桌面c++
- mfc、atl
- .>= 10.0.19041 win10 SDK
- SDK Debugging Tools,控制面板程序中勾选安装
-
Control Panel → Programs → Programs and Features → Select the “Windows Software Development Kit” → Change → Change → Check “Debugging Tools For Windows” → Change.
-
- SDK Debugging Tools,控制面板程序中勾选安装
安装 depot_tools
- 下载
- 环境变量 path 添加 depot_tools 安装路径
- 系统变量添加 DEPOT_TOOLS_WIN_TOOLCHAIN ,并设置为0
- 按下面命令在 cmd 设置自己的VS路径
set vs2019_install=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional
gclient
- 用于安装windows 需要的东西,如mysysgit 、python
- 确定 python安装
where python
确定 python.bat 在 python.exe.之前
get the code
通常需要设置代理/ 有全局代理
$ 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
- fetch 代码
fetch --no-history chromium
不下载历史信息- 大概率需要设代理,中断的话,使用
gclient sync
同步 - 如果需要历史信息,以回退调试固定版本,还是留着历史好了。
- 大概率需要设代理,中断的话,使用
- 出现了错误:应该是代理问题?没下载到这个一个文件。
Failed to download prebuilt clang package clang-llvmorg-14-init-17086-g38e16e1c-6.tgz Use build.py if you want to build locally. Exiting.
- 然后使用
gclient sync
同步。
- 出现问题:将对应error文件夹都删掉重新同步就好了。
Syncing projects: 85% (18/21) src/third_party/angle src/docs/website (ERROR)
编译
-
gn gen --ide=vs out\build
生成 vs工程(可以使用VS编译了,或者用命令行用ninja编译)- 得到结果:
Generating Visual Studio projects took 12001ms Done. Made 17069 targets from 2996 files in 43099ms
- 得到结果:
-
ninja -C out\build chrome
使用ninja 编译 (需很久)(出错可以重复增量编译?)- 结果:
[52062/52062] STAMP obj/chrome/chrome.stamp
- 结果:
-
可以VS打开.exe 单步调试。
-
可以VS打开all.sln GN编译调试。
编译加速
- 通过使用
sccache
使用缓存加速chromium编译;
-sccache
可以使用scoop
工具scoop install sccache
下载。
-scoop
工具通过powershell 下载:Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
- 通常将sccache
容量扩容至30Gset SCCACHE_CACHE_SIZE="30G"
基础概念
-
gn & ninja
- gn 相当于 cmake;ninja 相当于 make;
- gn 取代 GYP,GYP取代CMake 。gn 用C++写,提高速度。
- GYP相较于CMake:GYP 配置文件编写方式 强调模块化、结构化。
- gn 使用 Ninja 取代 Make 作为新的构建工具。Ninja 追求速度,减少特性以加快编译速度,
- ninja 使用
build.ninja
定义构建规则,相当于make 的Makefile
。
- ninja 使用
- gn 取代 GYP,GYP取代CMake 。gn 用C++写,提高速度。
- Chromium使用 Ninja 作为编译工具,使用GN生成.ninja配置文件
- gn 相当于 cmake;ninja 相当于 make;
-
so many projects
- 解决方案文件.sln 中有太多的项目了,找想看的看吧。
- 然后attach上进程debug