chromium源代码下载(Win7x64+VS2013sp2, 39.0.2132.2)
http://www.aichengxu.com/diannao/1000251.htm
前后折腾了四天,当中好多次都郁闷得想放弃,不过还好坚持了下来,也最终克服和因难。反思如此艰难的原因,一是因为英文不太好,所以只能找中文的文章来借鉴;二是中文的文章也大都过时了。所以,尽管通宵得身体都发抖了,还是坚持把操作成功的过程记下来。chormium的结构转变得太快了,说不定后天我的方法就过时了,越早写出来,也许能更多地帮到他人。
不得不提的是,正是更新下载经验日期最近的人给我的帮助最大,而两、三年前的人把我坑得最苦。。。。。
这里有两篇目前值得借鉴的文档,放在这里,互相印证吧:
http://blog.csdn.net/wangcheng711/article/details/38419869
http://blog.csdn.net/glunoy/article/details/23591047
下面开始我的经验讲述(所有列出命令在cmd.exe下执行):
一、预热
1.安装win7 64位与vs2013 sp2(毕竟我只有这个环境的经验,其他环境只能你自己摸索了),准备至少15G的硬盘空间(如果你还要编译的话,x4吧,呵呵,反正我有200G。。)
2.学会使用cmd命令cd和set.
3.学会设置环境变量,请自行百度;需要注意的是,在cmd.exe中使用set设置的环境变量并没有真的保存,也就是说,如果你把这个cmd窗口关了,原来set的环境变量需要重新设置(至少我电脑上是这样的,具体的可以自行测试)
4.决定要下载的版本号。可以找一个稳定版的chrome浏览器,获得它的版本号。最好不要用最新的,因为下载后,不一定能编过,到时候就头疼了。(我第一次是下载的trunk的,结果坑了,最后是下载release的成功了,所以我也不知道trunk的代码是不是也可以像下面我说的一样下载)
二、开始配置行动
1.下载depot_tools.https://src.chromium.org/viewvc/chrome/trunk/tools/,这个目录下有一个depot_tools.zip的文件,点一下就可以下载了。下载后,解压到某个位置。我就放在D:\下,所以生成了D:\depot_tools文件夹,把这个文件夹路径(D:\depot_tools)加入PATH环境变量。
2.新建一个文件夹,注意最好是英文名称且无空格。上面depot_tools的文件夹也是。像我就新建了e:\chromium。然后cd到此文件夹下,执行gclient config
http://src.chromium.org/svn/releases/39.0.2132.2,这里最后面应该是你自己选择的版本号。可以在
https://src.chromium.org/viewvc/chrome/releases/ 查看所有release版本。
3.上述命令会下载python276并安装,下载SVN并安装,下载Git并安装。但是国内是联不上Git所在的服务器的,所以要么改脚本,要么上VPN。我花了18块买了一个月的VPN,Git也下好了,就是安装了好几次都会出错,在网上搜索了一大圈,也没找到办法。不管了,反正也不知道是干什么的,有SVN应该就够了。进行下一步。
4.执行gclient sync。有的人说是gclient sync --force,反正我是用的前面的,--force参数不知道有什么用。然后就是漫长的下载,速度还是很快的,4M网速完全可以撑满。这里要下载大约10G的代码,以及win8SDK等很多东西。其他人都说有的东西可以不用下载的(4G多),但是要改脚本。我懒得改了,就让它下吧。其间断了几次网,反复执行了好几次gclient sync。证明反复执行是没有问题的,不用担心^_^(我不会告诉你我反复执行是有多害怕,害怕会全部重下。。)。最后,可以看到已更新到version:xxxxx。呃,其实是英文,我没记住。但是最后四个字母是"Done"。所以如果你没看到done,就再执行下命令吧。
5.漫长的下载后,我们终于见到曙光了。但是先别急。打开e:\chromium\src\build目录下的common.gypi。搜索msvs_disabled_warnings。有一个地方禁用了"很多很多"警告,我们也在这里模仿加上4996, 4067, 4800, 4251 保存关闭。
6.要开始生成.sln文件了。但是其实这步是最难的。让我在网上找了好几个小时的解决办法。
你现在应该还在e:\chromium的目录,再进一层到src,依次执行命令:
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_MSVS_VERSION=2013
set GYP_DEFINES=component=shared_library
set GYP_GENERATORS=ninja,msvs
set USE_AURA=1
gclient runhooks
注意最后一个命令:set GYP_GENERATORS=ninja,msvs,原本我看别人的文档是set GYP_GENERATORS=msvs,还专门强调了,但是我这样用,就会出现错误:
Traceback (most recent call last): File "src/build/landmines.py", line 227, in <module>
sys.exit(main())
....
完全找不到头绪,也是我运气好,尝试了设置了set GYP_GENERATORS=ninja,msvs,然后执行gclient runhooks,竟然又下载安装了一些东西,就成功了。想来就是chromium在最近又有了改动。
7.上面的命令执行完后,就可以找到src\chrome下面的chrome.sln,进行编译了。我用vs2013打开后,有900多个工程。编到200多时还卡住了,没有成功。最后找了一个较小的sln项目,改了几个错误,倒是成功了。
最主要出现的错误是:a.将警告视为错误,没有生成obj文件,这个只要将"将警告视为错误"改为否就行了,可以百度;
b.在当前页(xxx)下无法....请保存为Unicode文件,这个只要对报错的文件CTRL+A,然后点击VS2013的文件->高级保存选项,保存为Unicode(1200)就可以了。
c.无法访问的代码。这是一个4级警告,把警告级别调为3级就可以了。应该可以设置脚本吧,不然900多个,改到何年何月?不过我还不会。。
8.第六步完成后,理论上src等文件夹图标上应该是有一个绿色的小勾的。如果没有,选中此文件夹右键,会有SVN菜单“更新工作区XX”,更新下就可以了。
以上就是我的大部分经验,希望可以帮到某个正在郁闷的人~
睡觉去Orz