本文整理了当前最新的chromium 44开源代码的编译及调试方法,基本上是结合了官网的一些信息,以及实践中的注意点记录。

Widows

Windows环境下:参考 http://www.chromium.org/developers/how-tos/build-instructions-windows

环境配置

操作系统要求

win7 64位及以上的系统版本,32位不支持

更改系统区域语言为英语

[控制面板] - [区域和语言] - [管理] - [(非Unicode程序的语言)更改系统区域设置] - [设置为 英语(美国)]

安装depot_tools

参考:http://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up

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

  1. 添加环境变量:GYP_GENERATORS,值为 ninja,msvs-ninja,在cmd命令行下 set GYP_GENERATORS=ninja,msvs-ninja
  2. 生成工程与out配置:python build\gyp_chromium
  3. 要支持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

  1. ninja编译,xcode调试,可以使用export GYP_GENERATORS=ninja,xcode-ninja(如果xcode工程没有生成,则临时改成export GYP_GENERATORS=xcode来生成一下,中间可能会报错,不过我们生成工程是方便调试,报错无所谓)来生成基本的xcode工程
  2. 如果需要加快编译速度(但是不支持调试),可以:GYP_DEFINES=fastbuild=1 build/gyp_chromium
  3. 要支持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