源码之前了无秘密 - 侯捷的《STL源码分析》
他这里的源码主要是指阅读源码,基于这个定义,个人将这句话稍作修改:“源码 + 调试”之前了无秘密。
抱着研究的态度,今天用VC++ 2008编译了Chrome的源码(现在机器上的VC++版本只剩2008了),现将编译流程描述如下:
1. 用TortoiseSVN下载最新的Chrome源码,假设下载到了目录“G:/Chrome/src/”下,以后的目录布局都基于这个假设
2. 准备Chrome依赖的源码
a) 无需下载的
编译时,Chrome依赖的第三方代码都应该在“G:/Chrome/src/src/third_party”,但是很奇怪,Chrome将六个项目放在了“G:/Chrome/src/deps/third_party”下。网上有同仁也提出了这个问题,他们的解决方法是将这六个项目copy一份到“G:/Chrome/src/src/third_party”,相当管用。但本人本着节约型社会,硬盘虽大,仍需节省利用的原则,使用了微软的官方工具junction通过创建软链接解决了这个问题,所使用命令如下 (注意:命令是在目录G:/Chrome/src/下执行):
junction src/third_party/icu38 G:/Chrome/src/deps/third_party/icu38
junction src/third_party/cygwin G:/Chrome/src/deps/third_party/cygwin
junction src/third_party/cygwin_src G:/Chrome/src/deps/third_party/cygwin_src
junction src/third_party/python_24 G:/Chrome/src/deps/third_party/python_24
junction src/third_party/WebKit G:/Chrome/src/deps/third_party/WebKit
junction src/third_party/svn G:/Chrome/src/deps/third_party/svn
junction的下载地址是http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx
b) 需要重新下载的
还有五个项目需要重新下载,分别是open-vcdiff,gtest,googleurl,v8,breakpad。
利用TortoiseSVN下载open-vcdiff的地址是http://src.chromium.org/svn/branches/official/build_154.9/src/sdch
下载到本地目录G:/Chrome/branches/build_154.9/src/sdch
利用TortoiseSVN下载gtest的地址是http://googletest.googlecode.com/svn/trunk
下载到本地目录G:/Chrome/gtest/trunk
利用TortoiseSVN下载googleurl的地址是http://google-url.googlecode.com/svn/trunk
下载到本地目录G:/Chrome/google-url/src
利用TortoiseSVN下载v8的地址是http://v8.googlecode.com/svn/trunk
下载到本地目录G:/Chrome/v8/trunk
利用TortoiseSVN下载breakpad的地址是http://google-breakpad.googlecode.com/svn/trunk
下载到本地目录G:/Chrome/google-breakpad/trunk
创建软链接所使用命令如下:
junction src/sdch/open-vcdiff ../branches/build_154.9/src/sdch/open_vcdiff/depot/opensource/open-vcdiff
junction src/testing/gtest ../gtest/trunk
junction src/googleurl ../google-url/src
junction src/v8 ../v8/trunk
junction src/breakpad/src ../google-breakpad/trunk/src
c) 编译v8项目
用VS 2008打开和编译G:/Chrome/v8/trunk/tools/visual_studio/v8.sln,打开时会提示你转换项目,直接转换,没有问题,编译后顺利的话应该在目录G:/Chrome/v8/trunk/tools/visual_studio/Debug/lib下生成v8.lib
3. 修改Chrome项目
a) 修改G:/Chrome/src/src/build/debug.vsprops,将
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
/>
修改成
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
AdditionalDependencies="$(SolutionDir)../v8/tools/visual_studio/Debug/lib/v8.lib"
/>
b) 打开G:/Chrome/src/src/chrome/chrome.sln,将文件G:/Chrome/src/src/testing/gtest/src/gtest-test-part.cc文件添加到项目test/gtest中
4. 开始编译吧 :),喝杯开水,看看paper,静候成功
5. 运行G:/Chrome/src/src/chrome/Debug/chrome.exe看看编译的成果吧 :)