转载自:http://blog.csdn.net/zcmit/article/details/17007779
一、先决条件
1、 Win7 64位系统,硬盘空间60G,最好是SSD。
2、 安装vs2010(确认已安装64位编译工具组件)、vs2010 sp1(最好使用ISO)。
3、 安装win8 SDK(最好使用默认安装路径,这个没有ISO可用),只能用微软在线安装程序,完成后将其根目录添加到PATH环境变量中:
http://msdn.microsoft.com/en-us/windows/hardware/hh852363.aspx。
4、 安装DirectX SDK:
http://download.microsoft.com/download/A/E/7/AE743F1F-632B-4809-87A9-AA1BB3458E31/DXSDK_Jun10.exe。
5、 把win8 SDK和DirectX SDK添加到VS2010的INCLUDE和LIB目录:
\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user和\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.x64.user:
6、 修改win8 SDK中Include\winrt\asyncinfo.h文件:
注释掉class关键字。
二、获取源码:
1、 在你的机器上有50G剩余空间的磁盘分区上建立源码根目录,最好是SSD并且没有虚拟内存分页文件的磁盘,如:C:\chromium,注意根目录不能有中文和空格。
2、 下载源码有3种方法:(1)直接用svn的windows客户端签出代码;(2)下载tarball压缩包(方便快速,但不支持vs);(3)使用depot_tools签出代码,这是google推荐的方式,速度慢但支持vs,同时自动下载第三方依赖工具,所谓一键部署,比配置V8编译环境时手动一个个下载确实要方便。我使用的第三种方式,为了加速我使用了goagent替换系统全局代理,对比后速度确实加快不少。
3、 下载depot_tools:https://src.chromium.org/svn/trunk/tools/depot_tools.zip,解压在任意目录,然后将其根目录加入PATH环境变量。
4、 进入源码根目录目录,执行
gclient config https://src.chromium.org/chrome/trunk/src,或:
gclient config http://src.chromium.org/svn/releases/32.0.1700.19,
后者的意思是下载一个指定的release版本,此处为最新稳定版。注意这一步还未开始下载,只是配置需要下载的源码svn路径,同时depot_tools会在这一步自动下载python、cyg等第三方工具在chromium\build\third_party中。
5、 修改C:\chromium.gclient文件,增加如下内容:"src/webkit/data/layout_tests/LayoutTests":None,
"src/third_party/WebKit/LayoutTests": None,
"src/chrome_frame/tools/test/reference_build/chrome_win":None,
"src/chrome/test/data/perf/canvas_bench":None,
"src/chrome/test/data/perf/frame_rate/content": None,
"src/chrome/tools/test/reference_build/chrome_mac": None,
"src/chrome/tools/test/reference_build/chrome_win": None,
"src/chrome/tools/test/reference_build/chrome_linux": None,
'src/chrome/test/data/layout_tests/LayoutTests/fast/workers': None,
'src/chrome/test/data/layout_tests/LayoutTests/platform/chromium/fast/workers':None,
'src/chrome/test/data/layout_tests/LayoutTests/fast/js/resources': None,
'src/chrome/test/data/layout_tests/LayoutTests/platform/chromium-mac/http/tests/workers':None,
'src/chrome/test/data/layout_tests/LayoutTests/http/tests/resources':None,
'src/chrome/test/data/layout_tests/LayoutTests/storage/domstorage':None,
'src/chrome/test/data/layout_tests/LayoutTests/fast/events': None,
'src/chrome/test/data/layout_tests/LayoutTests/http/tests/workers':None,
'src/chrome/test/data/layout_tests/LayoutTests/http/tests/xmlhttprequest':None,
'src/chrome/test/data/layout_tests/LayoutTests/platform/chromium-win/storage/domstorage':None,
'src/chrome/test/data/layout_tests/LayoutTests/http/tests/appcache':None,
'src/chrome/test/data/layout_tests/LayoutTests/platform/chromium-win/fast/events':None,
'src/chrome/test/data/layout_tests/LayoutTests/platform/chromium-mac/fast/events':None,
'src/chrome/test/data/layout_tests/LayoutTests/platform/chromium-mac/storage/domstorage':None,
'src/chrome/test/data/layout_tests/LayoutTests/websocket/tests/workers':None,
'src/chrome/test/data/layout_tests/LayoutTests/platform/chromium-win/fast/workers':None,
'src/chrome/test/data/layout_tests/LayoutTests/platform/chromium-win/http/tests/workers':None,
'o3d/samples': None,
这里的意思是不要下载以上工程,以加快编译速度。
6、 运行gclient sync--force,开始下载代码。如果没有使用goagent等翻墙工具会很慢,同时会有很多连接失败的错误或svn提示关闭了远程链接,这时只要重新运行这个命令,多重复几次即可。在使用了goagent后速度很快,报错也很少。下载结束后会自动调用gyp生成chrome.sln。
7、 在上一步结束后若未生成chromium\src\chrome\chrome.sln,运行命令:
gclient runhooks --force,生成sln文件。如果出现python错误,参照http://www.cnblogs.com/cloud2rain/p/3427194.html。
8、 打开chrome.sln,如果安装了VisualAssistant,打开会很慢,建议打开前禁用VA。
三、编译:
Google给出了几条编译优化措施,编译之前最好都参照其说明配置一下。
1、 最好使用多核CPU、64位系统、8G以上内存。(我的配置)
2、 关闭杀毒软件(关闭百度杀毒的自保护)。
3、 修改这里,减小并行数目(貌似默认是cpu核数):
4、 修改C:\chromium\src\tools\gyp\test\home_dot_gyp\home\.gyp\include.gypi文件为如下内容:
{
'variables': {
'msvs_multi_core_compile': 0,
},
'target_defaults': {
'msvs_settings': {
'VCCLCompilerTool': {
'AdditionalOptions': ['/MP3'],
},
},
},
}
这里的/MP3是同时运行的cl.exe的个数,改为你的cpu核数-1个,我这里是3。
5、 Google说的ninja编译我没用使用成功,估计是google文档中众多没有更新的其中一条。做好以上4步就好了。
6、 不要使用IncrediBuild,不适合chrome的编译场景。
7、 编译过程中如果出现和test相关的工程中的错误,不要理会。
8、 总共有:,未优化编译预计要11-12个小时。
9、 编译结束可能会有test工程的错误,在\src\build\Debug\中会生成chrome.exe。
运行结果:我编译的32.0.1700.19最新稳定版,内部V8版本3.22,也是最新稳定版。我只编译了32位Debug版,最终使用了硬盘空间42.6G。
四、总结
Google的官方文档说的还是很详细的,照着一步步来还是可以成功编译的,在下载编译的过程中遇到的一些问题,自己在网上查找解决方案发现一般都是编译环境不符合Google的官方文档的要求。由于国内网络环境受限,建议大家还是代理下载代码。编译过程中CPU使用率会一直维持在100%,所以最好还是一边睡觉一边编译。