1.下载depot_tools

2. 更新depot_tools

gclient

3. 获取代码,托GFW的鸿福,时间要很久。科学上网,是不错的选择

gclient config http://src.chromium.org/svn/trunk/src
gclient sync --force
  • http://src.chromium.org/svn/trunk/src 为trunk下代码,有可能编译不过,即使编译成功 此版本的浏览器很可能有许多问题,建议使用release下的版本代码。 如: http://src.chromium.org/svn/releases/35.0.1916.153/
  • 目录路径不能包含'@'字符,svn update时,会出... a peg version ...的错误
set GYP_MSVS_VERSION=2013
set GYP_GENERATORS=msvs-ninja,ninja
gclient runhooks --force

5. 编译

debug版,不设置GYP_DEFINES link时会出错

set GYP_DEFINES=component=shared_library
ninja -C out\Debug chrome

release版

ninja -C out\Release chrome.exe

参考

Chromium building with nanja or najia+vs2013

标签: chromium
日期: 2014-07-04 17:30:06, 10 years and 196 days ago

源码版本

chromium源码基于r274914(35.0.1916.153)

吐槽

scope大法好,lock保平安,new在做,weakptr在看,不信factory留隐患,refcount不对自身灭。

chromium代码都是多个类按照一个模式进行组合,要按功能以模式为单位多个类放在一起理解。

用C++的OO写的代码,不管是好代码和烂代码都一样的不易读。好代码和烂代码唯一的区别就是读完了好代码结构比较清晰,而烂代码还是一样的烂。 继承给调试带来了无尽的痛苦,因为你跟到基类的方法不知道这个到底是基类实例化的对象还是子类实例化的对象。

一入chromium深似海,从此美剧是路人。

思路

            +--答案不正确-----+
            |                  \
            V                   \
提出问题->假设答案-+->静态走读代码印证答案--->调试代码确认答案-+->整理关系
                    \            |                  ^           \
                 没有思路        |                  |            +->整理时序
                      \          V                 /    
                       +->查找相关资料------------+    

每日工作

~note.txt +----> ~issuse.txt | +----> archive.md * 每日知识点,心得,问题记录在~note.txt中。 * 整理note内容,知识点和心得的归档为markdown格式的文档,问题归入issuse中, 未整理好的继续保留在note中。 * 使用有道词典管理chromium文档或源码中的词汇,每日复习词汇。

文档阅读

 略读 - 总结
  |
 保存
  |
 文中引用链接添加至~links.txt中
  |
找到作者其他相关的文档添加至~link.txt中

文档命名规则

0开头为笔记和总结 1开头的为base模块相关的源码分析

专有名词和缩写

  • POD Plain Old Data 在C++中,我们把传统的C风格的struct叫做POD(Plain Old Data)对象。 POD
标签: chromium
日期: 2014-06-27 17:30:06, 10 years and 203 days ago