新版本的chromium代码下载方式远比以往的版本要麻烦了一些。
首先说一下chromium几个必备的条件,我的系统是win7 64就按照这个环境描述。
必须安装环境:
win8 sdk
directx sdk
vs 2010(至少)
由于vs 2010对C++11支持的问题,试了好几次实在受不了了果断装了vs 2013,所以我的新环境是:
vs 2013 update 3
win8 sdk
directx sdk(没有装,也不清楚vs 2013会不会帮我装,遇到编译问题再说)
准备好环境以后就是下代码,我觉得vpn太麻烦,所以下面用的http代理方式,下面是配置http代理:
set http_proxy=http://127.0.0.1:808
#配置winhttp代理,cscript 走代理
netsh winhttp set proxy 127.0.0.1:808
git config --global http.proxy http://127.0.0.1:8080
#svn配置略,这个简单
配置好http代理以后,需要做的就是拿代码,如果是一个新建的chromium环境,由于没有代码和.gclient文件,所以不能直接用gclient sync,官方也没有说gclient config要怎么配。
所以按照官方的说明就只能通过fetch拿代码了:
<pre>#从代码库拿chromium
fetch --nohooks --no-history chromium --nosvn=True
#看看在拿代码的期间有没有什么代码产生变动
gclient sync --force --nohooks
拿完代码以后,让gclient生成vs 2013工程配置
<pre>set GYP_DEFINES=component=shared_library
set GYP_GENERATORS=msvs
set GYP_MSVS_VERSION=2013
gclient unhooks --force
这样就完成了整个chromium代码的下载和工程配置,接下来就是编译的事情了。
新版本的gclient和获取chromium方式带来了很多问题,通过google发现其实gclient的bug还很多,这需要各种斗智斗勇。。。。。。
通过gclient拿下来的只有代码和一堆配置文件,需要让其生成工程文件。
由于已经安装vs 2010和win8 sdk了。不打算走vs 2013的路线,参考chromium官方文档后,需要在执行gclient runhooks之前执行以下环境变量的配置
set GYP_DEFINES=windows_sdk_path="C:\Program Files (x86)\Windows Kits\8.0"
set GYP_GENERATORS=msvs
set GYP_MSVS_VERSION=2010
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
其中几个参数的说明:
GYP_DEFINES 指明win8 sdk的位置。
GYP_GENERATORS 指明是msvs环境
GYP_MSVS_VERSION 指明是2010 pro版本
DEPOT_TOOLS_WIN_TOOLCHAIN 让gclient不要自动去构造环境,利用本机现有环境即可。
由于代码中用到了c++11还有一些其他我还没搞清楚的特性,所以编译代码最好用vs 2010。vs 2008可能会存在大量的问题。
继 《gclient 走代理方式获取google开放源码 — gclient说明》
我这边的环境比较奇怪,gclient总是会找google去下chromium对应的git包,它不使用环境里面的git,这样也好,在gclient的配置至少不会影响到大局。
1,进入cmd
2,cmd中配置让cmd走代理(我的http代理不需要认证,所以注释掉了其中两个命令)
set http_proxy=http://127.0.0.1:8080
#set http_proxy_user=<你的用户名>
#eset http_proxy_pass=<你的密码>
3,配置gclient的git走http代理,在之前的cmd中执行如下命令
#gclient git的位置
cd D:\work\depot_tools\git-1.9.0.chromium.5_bin\bin
#执行配置
git config --global http.proxy http://127.0.0.1:8080
这样gclient通过自身目录下的git拿代码时就走了http代理了。
继 《gclient 走代理方式获取google开放源码 — gclient说明》
查了一下网上的说明,基本大同小异,但还是有些地方没有说清楚。现在这里总结一下我实验成功的用法。
netsh winhttp set proxy 127.0.0.1:808 "<local>" #配置winhttp代理
set http_proxy=http://127.0.0.1:808 #gclient 的 python脚本里的urllib2和其他几个对象默认使用http代理
chromuim和webrtc均使用了gclient。
实际上直接使用svn或git将代码拿下来也是可以的,但只不过gclient做了一些工程配置相关的行为,不使用gclient去管理源码,后期对代码的编译、修改都多少会有点影响。
从chromium项目上拿下来的gclient是缺少几个必备的辅助工具:python runtime、svn、git。
我的win7下已经安装了git和svn,很奇怪的是gclient每次都会自动去下git和svn,也引起也不小的困扰。
先说说gclient拿代码的几个步骤:
1,检查gclient是否完整
*2,如果不完整就安装缺少的东西,或者更新gclient自身
3,拿代码(假设运行的是gclient sync)
对于第二步来说,gclient下python、svn、git等工具均是采用javascript。
对于第三部来说,gclient会根据.gclient配置去使用svn/git去下载代码。
由于众所周知的原因,gclient最容易受阻的地方显然是2和3。下面几篇文章将分别说明如何解决。