一、环境
1、Win10专业版
2、VS2015英文版(安装时勾选14343版本Windows10SDK)
3、控制面板->区域->管理->更改系统区域设置,选择英语
4、准备好VPN,推荐https://myxgj.com
二、下载chrome源代码
1、下载生成工程工具depot_tools
2、系统环境变量中添加
DEPOT_TOOLS_WIN_TOOLCHAIN=0
GYP_MSVS_VERSION=2015
GYP_GENERATORS=msvs-ninja,ninja
3、cmd 命令行运行gclient
三、编译
1、cmd命令行cd到下载文件夹中的src目录
2、切换分支git checkout 55.0.2883.105(推荐用TortoiseGit中的Switch/CheckOut切换)
3、cmd命令行输入"gclient sync --force"同步代码
4、D:\chromium\src\build\vs_toolchain.py中找到
# If WINDOWSSDKDIR is not set, search the default SDK path and set it.
if not 'WINDOWSSDKDIR' in os.environ:
default_sdk_path = 'C:\\Program Files (x86)\\Windows Kits\\8.1'
if os.path.isdir(default_sdk_path):
os.environ['WINDOWSSDKDIR'] = default_sdk_path
//设置default_sdk_path = 'C:\\Program Files (x86)\\Windows Kits\\10',使其默认用Windows10SDK
//5、chromium\src\build\config\compiler\BUILD.gn中设置
// treat_warnings_as_errors = false
// 解决把警告视为错误的问题
//6、src\tools\gyp\pylib\gyp\MSVSVersion.py :237行 v140改为v140_xp,使其支持xp
7、ffmpeg中有个全局常变量(变量名已经忘记)找不到符号,可以删除引用的头文件,自己定义改变量(因为是常变量)
8、delay_load_hook_win.cc中
#include
之前加#define DELAYIMP_INSECURE_WRITABLE_HOOKS(注意是"之前")
PfnDliHook __pfnDliNotifyHook2 = ChromeDelayLoadHook;
PfnDliHook __pfnDliFailureHook2 = ChromeDelayLoadHook;
变量前面加extern
解决这2个变量重新定义的编译问题
9、cmd命令行依次输入一下命令开始编译:
$gn args out/Release
上面这个命令会打开一个文本文件,在文件在输入
is_component_build = false
is_debug = false
target_cpu = "x86"
symbol_level = 0
dcheck_always_on = false
is_official_build = true
treat_warnings_as_errors = false
ffmpeg_branding = "Chrome"
proprietary_codecs = true
$gn gen out/Release --ide=vs
$gn gen --ide=vs --filters=//chrome out\Release //简化版
$ninja -C out/Release chrome
Debug版
$gn args out/Debug
上面这个命令会打开一个文本文件,在文件在输入
is_component_build = true
is_debug = false
target_cpu = "x86"
symbol_level = 2
dcheck_always_on = false
is_official_build = true
treat_warnings_as_errors = false
ffmpeg_branding = "Chrome"
proprietary_codecs = true
$gn gen out/Debug --ide=vs
$gn gen --ide=vs --filters=//chrome out\Debug //简化版
$ninja -C out/Debug chrome
###########################资料##############################
1、官方文档https://www.chromium.org/developers
2、关于VS调试chrome以及chrome代码大致的架构:https://github.com/pengx17/pengx17.github.io/blob/master/_posts/2012-12-05-learning-chromium.md
调试:
devenv /debugexe out\Debug\7654Browser.exe --renderer-startup-dialog --no-sandbox
3、本地化:http://blog.csdn.net/tfancy2012/article/details/51524293
4、chrome.user32.delay.imports中标记的函数xp中没有
//5、xp中如果打不开网页或者找不到函数,直接删除该函数的调用