本文整理了当前最新的chromium 44开源代码的编译及调试方法,基本上是结合了官网的一些信息,以及实践中的注意点记录。
Widows
Windows环境下:参考 http://www.chromium.org/developers/how-tos/build-instructions-windows
环境配置
操作系统要求
win7 64位及以上的系统版本,32位不支持
更改系统区域语言为英语
[控制面板] - [区域和语言] - [管理] - [(非Unicode程序的语言)更改系统区域设置] - [设置为 英语(美国)]
安装depot_tools
VS2013 + update4
环境变量:GYP_MSVS_VERSION,值2013
注意:需要安装vs2013的英文语言包https://www.microsoft.com/en-US/download/details.aspx?id=40783,然后在vs2013中设置使用英语作为语言环境,否则编译时会出现乱码,严重影响编译问题的定位。
Windows 8.1 SDK
环境变量:DEPOT_TOOLS_WIN_TOOLCHAIN,值0
获取代码
下载代码,参考:http://dev.chromium.org/developers/how-tos/get-the-code
代码源在国外,如果代码下载不到,请自备梯子。
获取主干代码
fetch --nohooks chromium
获取可用的Release的tag
git fetch --tags
切换到指定的tag,并同步代码
git checkout -b tags/44.0.2403.155 44.0.2403.155
gclient sync --with_branch_heads --jobs 16
编译
配置动态库类型
如果需要设置为动态链接库的形式,指定环境变量:GYP_DEFINES,值为 component=shared_library
使用VS2013来浏览和编辑代码(并非编译)
参考:https://code.google.com/p/chromium/wiki/NinjaBuild
- 添加环境变量:GYP_GENERATORS,值为
ninja,msvs-ninja
,在cmd命令行下set GYP_GENERATORS=ninja,msvs-ninja
- 生成工程与out配置:
python build\gyp_chromium
- 要支持mp3等audio格式,需要:
python build\gyp_chromium -D ffmpeg_branding=Chrome
部署环境
gclient runhooks
,会自动下载nijia编译依赖的工具链
用ninja编译
进入src目录,执行:
ninja -C out/Debug chrome
ninja -C out/Debug content_shell
在Windows下可以建立编译批处理文件
debug_build.bat
set GYP_GENERATORS=msvs-ninja,ninja
set GYP_MSVS_VERSION=2013
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
ninja -C src/out/Debug chrome
release_build.bat
set GYP_GENERATORS=msvs-ninja,ninja
set GYP_DEFINES=branding=Chromium buildtype=Official
set GYP_MSVS_VERSION=2013
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
ninja -C src/out/Release chrome
调试
由于编译使用ninja,编译与调试分离了,不过可以通过VS2013打开工程,下好断点,然后动态的附加到进程上调试。
Mac OS X
参考:https://code.google.com/p/chromium/wiki/MacBuildInstructions
准备代码
避免代码的重新下载,代码直接从Windows那边共享拷贝到Mac电脑上。
安装depot_tools
下载
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
添加 depot_tools 到PATH:
export PATH=`pwd`/depot_tools:"$PATH"
下载工具链
cd src
gclient runhooks
生成工程编译的准备
build/gyp_chromium
- ninja编译,xcode调试,可以使用
export GYP_GENERATORS=ninja,xcode-ninja
(如果xcode工程没有生成,则临时改成export GYP_GENERATORS=xcode
来生成一下,中间可能会报错,不过我们生成工程是方便调试,报错无所谓)来生成基本的xcode工程 - 如果需要加快编译速度(但是不支持调试),可以:
GYP_DEFINES=fastbuild=1 build/gyp_chromium
- 要支持mp3等audio格式,需要:
build/gyp_chromium -D ffmpeg_branding=Chrome
编译
使用ninja编译
ninja -C out/Debug chrome
ninja -C out/Debug content_shell
调试
使用xcode调试,动态的Attach进程。需要调试的话,不能指定GYP_DEFINES=fastbuild=1
参考:http://dev.chromium.org/developers/how-tos/debugging-on-os-x