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

chromium源代码下载(Win7x64+VS2013sp2, 39.0.2132.2)的更多相关文章

  1. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转

    效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])    本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   ...

  2. Android源代码下载方法具体解释

    作者:张星 相信非常多下载过内核的人都对这个非常熟悉 git clone git://android.git.kernel.org/kernel/common.git kernel 可是这是在曾经,如 ...

  3. jQuery粘性跟随滚动条滚动的导航栏源代码下载

    jQuery粘性跟随滚动条滚动的导航栏源代码下载 作者:网页模板 大小:0.005MB 点击次数:3494 发布时间:2014-03-07 12:55 分享到:0 特效介绍 jQuery粘性跟随滚动条 ...

  4. WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载]

    原文:WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载] 我们有两种典型的WCF调用方式:通过SvcUtil.exe(或者添加Web引用)导入发布的服务元数据生成服务代理相关的代码 ...

  5. AppBox_v2.0完整版免费下载,暨AppBox_v3.0正式发布!

    文章更新: AppBox v6.0中实现子页面和父页面的复杂交互 AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. AppBox ...

  6. 文顶顶iOS开发博客链接整理及部分项目源代码下载

    文顶顶iOS开发博客链接整理及部分项目源代码下载   网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程 ...

  7. 基于视觉的Web页面分页算法VIPS的实现源代码下载

    基于视觉的Web页面分页算法VIPS的实现源代码下载 - tingya的专栏 - 博客频道 - CSDN.NET 基于视觉的Web页面分页算法VIPS的实现源代码下载 分类: 技术杂烩 2006-04 ...

  8. WCF技术剖析之二十八:自己动手获取元数据[附源代码下载]

    原文:WCF技术剖析之二十八:自己动手获取元数据[附源代码下载] 元数据的发布方式决定了元数据的获取行为,WCF服务元数据架构体系通过ServiceMetadataBehavior实现了基于WS-ME ...

  9. mysql+ssh整合样例,附源代码下载

    项目引用jar下载:http://download.csdn.net/detail/adam_zs/7262727 项目源代码下载地址:http://download.csdn.net/detail/ ...

随机推荐

  1. c# 对List<T> 某字段排序,取TOP条数据

    //排序的对象里的字段数据准备 try { cmr.v4 = Double.Parse(cmr.v3) - Double.Parse(cmr.v2); } catch (Exception e) { ...

  2. POJ 1703 Find them, Catch them(并查集拓展)

    Description The police office in Tadu City decides to say ends to the chaos, as launch actions to ro ...

  3. Uva 294 Divisors(唯一分解定理)

    题意:求区间内正约数最大的数. 原理:唯一分解定义(又称算术基本定理),定义如下: 任何一个大于1的自然数 ,都可以唯一分解成有限个质数的乘积  ,这里  均为质数,其诸指数  是正整数.这样的分解称 ...

  4. Python时间获取及转换知识汇总

    时间处理是我们日常开发中最最常见的需求,例如:获取当前datetime.获取当天date.获取明天/前N天.获取当天开始和结束时间(00:00:00 23:59:59).获取两个datetime的时间 ...

  5. Mybatis学习系列(三)动态SQL

    在mapper配置文件中,有时需要根据查询条件选择不同的SQL语句,或者将一些使用频率高的SQL语句单独配置,在需要使用的地方引用.Mybatis的一个特性:动态SQL,来解决这个问题. mybati ...

  6. [转] const int *a与int *const a,const int *const a的区别

    http://blog.csdn.net/zhangheng837964767/article/details/33783511 关键问题点:const 属于修饰符 ,关键是看const 修饰的位置在 ...

  7. elementUI中的el-form怎么使用正则进行验证

    http://element.eleme.io/#/zh-CN/component/form里给出了一个form验证的例子,但是都是使用el-form带有的验证规则,怎么使用自己定义的规则进行验证呢? ...

  8. Flink之状态之checkpointing

    1.前言 在Flink中,函数和操作符都可以是有状态的.在处理每个消息或者元素时,有状态的函数都会储存信息,使得状态成为精密操作中关键的组成部分. 为了使状态能够容错,Flink会checkpoint ...

  9. stap用法

    sudo stap -g submit_bio.stp -D MAXACTION=100000 kern_path_locked lookup_one_len filename_create --&g ...

  10. poj 1753 Flip Game (dfs)

    Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 28805   Accepted: 12461 Descr ...