Chrome/WebKit 编译构建 (Windows)

图:编译的TestShell工具和打印的渲染树

 

主要的参考文章

官网提供的构建指南,不过有些过时(访问需翻墙)。

Flex的博客,提供十分有用的中文指引。

主要工作

Chrome的构建工作主要包括下面几个部分:

  1. 预备编译环境,包括安装VS2005或者VS2008,一大堆的补丁,Windows7 SDK和DirectX SDK,官方的构建指南里面已经有详细的说明。
  2. 获取源码,首先是获得部署工具,再使用部署工具获得源代码,可以参考Chrome编译一文。
  3. 生成VS工程并编译,新的源码已经不直接附带VS工程,需要使用部署工具动态生成,具体参考Chrome编译一文,关于工程的说明和疑难排除可以参考官方的构建指南。

实际构建过程碰到的一些问题

下面列出实际构建过程中碰到的一些问题和处理方法,希望对各位有帮助。

  • Windows7 SDK分32位和64位版本,下载时要选对。
  • 直接使用gclient签出所有的源代码碰到的问题会比较少。
  • 如果是自行使用svn直接签出src目录的,在调用gclient建立仓库到目录的绑定后(在根目录生产一个.gclient的文件),需要再gclient sync一下,因为src下面很多第三方库或者工具实际上在是别的svn路径上面(在trunk/deps/third-party或者trunk/tools/third-party下面),gclient会根据src下面的DEPS文件从别的路径签出这些库和工具。
  • 如果使用gclient生成VS项目工程文件时,python报错说缺少gyp模块,可以从下面地址http://code.google.com/p/gyp/签出gyp项目,然后运行“setup.py build”构建gyp模块,并把生成的模块(build\lib\gyp)拷贝到gclient使用的python程序的lib/sit-packages下面(tools\depot_tools\python_bin\Lib\site-packages)。
  • 如果不堪忍受Checkout源码的过程,可以直接下载打包好的源码包:http://chromium-browser-source.commondatastorage.googleapis.com/chromium_tarball.html建议选择这种方式,如果要更新到最新版本,运行gclient sync即可。

官方的一些加速构建过程的建议

Chrome的构建非常耗费时间,官方提供了一些可以加速构建过程的建议。

  1. 使用真正的多核CPU
  2. 使用64位操作系统
  3. 最好匹配8G以上的RAM(-_-p)
  4. 使用VS2008
  5. 禁止病毒防火墙扫描临时文件和工作文件夹
  6. 重整硬盘碎片
  7. 根据RAM的大小调整最大并行编译的数目,比如说12G RAM可以使用8并行编译,内存越少应该设定的并行编译的数目就越少

个人在一台I5/4G/Win7 64/VS2008的笔记本上面编译TestShell项目大概花费差不多一个多小时,当然里面最耗费时间就是编译WebKit了,大量使用模板的C++代码编译起来真是龟速,不过以以前编译Qt动侧就是大半天来说这还算是好的了,如果实际开发的话,不知道是不是要匹配8核12G才会比较爽…

 

Advertisements