资源描述
版本说明和先决条件
版本说明
Chromium的版本格式为:X . 0(数字零). Y . Z,如:41.0.2272.104。CEF的版本格式为:X . Y . Z,如:3.2272.30。目前X为3;Y是release branch号(等价于chromium的branch号);Z暂不用兼顾。由于CEF依赖于chromium的基础库,所以首先必须在官网上查找对应的版本,否则编译时可能导致不可预知的问题。截至日期2015.5.7,CEF + chromium配套的稳定release版本如下:
A、CEF版本release vesion 2272
B、Chromium版本release version 41.0.2272.104
因此,需要下载对应的版本,才能保证编译没有大问题。可参考后续的链接说明。
先决条件
目前仅提供在windows下的编译环境。
A、硬件:8G+内存、硬盘50G+、CPU i3+
B、操作系统:windows 7 64 bit 旗舰版(中or英)
C、编辑和开发软件:VS 2013 ultimate(中or英)、update 4(VS2013.4.exe)
D、VPN代理:推荐使用6VPN,它可用不同的邮箱重复注册生成帐号、密码,一个帐号可以免费使用2小时左右,下载速度在400K/S左右。或者使用20元包月的付费VPN。(注意:如果在国内无法访问美国网的环境下,必须使用VPN,否则无法下载源码,如果使用本地别人打包好的源码也可以,但必须注意CEF和chromium兼容的版本)
如下图1所示:
图1
源码下载和设置系统/用户的环境变量
CEF官网上提供自动化下载和手动下载两种方式。以下仅介绍手动下载的方式。
下载depot_tools工具包
depot_tools工具包是后续下载源码的必要工具,下载后解压,如路径为:E:\depot_tools。(注意:depot_tools可以使用官网下载的,20M左右,也可以使用网上别人打包好的,大概2G左右,因为自己重新下载的depot_tools后续也是需要使用执行gclient在线更新相关软件的,如:git、python等)。
设置环境变量
A、 添加用户变量
Path=E:\depot_tools;E:\depot_tools\python276_bin;%PATH%
B、 添加系统变量
l DEPOT_TOOLS_WIN_TOOLCHAIN=0
l GYP_MSVS_VERSION=2013
l GYP_GENERATORS=msvs-ninja,ninja
l GYP_DEFINES=component=shared_library=windows_sdk_path="C:\Program Files (x86)\Windows Kits\8.1" disable_nacl=1
l Path在原内容前面追加如下内容:
E:\depot_tools;E:\depot_tools\python276_bin;
如下图2所示:
图2
(注意:注意本地环境的路径不要有中文字符、空格等特殊字符,自定义修改)
在线更新源码获取工具
打开cmd命令行,输入:gclient,等待获取git、python等工具包。如果是使用本地打包好的depot_tools工具包(大概2G左右),此步骤可以忽略。
设置git配置
首次使用git需要设置如下配置信息,已经设置则可忽略本步骤。
git config --global user.name "JC" #名字自己改
git config --global user.email "kuerjinjin@" #邮箱自己改
git config --global core.autocrlf false
git config --global core.filemode false
chromium源码下载
A、假设本地自定义存放源码的路径为:E:\chrome\trunk
B、cd进入到该路径,执行如下命令开始获取主干代码
git fetch --nohooks chromium --nosvn=true
C、等待N个小时后会如果下载完毕会出现100%等相关提示,接着cd进入src路径下并签出指定版本branch。执行如下命令:
cd src
git checkout -b chrome_42.0.2272.140_local_branch 42.0.2272.140
(说明:绿色部分为本地自定义branch的标签号,红色部分为想要签出的branch号。)
接下来要同步该版本的源代码,执行如下命令:
gclient sync --with_branch_heads --jobs 16
D、等待N个小时源码下载完毕后大概20G左右。如下图3所示:
图3
(注意:要确保源代码已经下载100%完毕,如果出现位置错误执行:gclient sync --fore,强制同步代码。并且在src路径下操作。使用git branch可以查看当前branch号,如下图4所示)
图4
CEF源码下载
A、进入src路径,获取cef的git文件,执行如下命令:
git clone https://bitbucket.org/chromiumembedded/cef.gi
B、执行完毕后会在src目录生成cef目录,进入该路径,签出指定版本的源码,执行如下命令:
git checkout 2272
C、 保证代码下载完毕,否则可以继续执行:gclient sync或gclient sync –force,同步代码;通过git branch可以查看当前本地的cef的branch号:如下图5所示:
图5
编译
生成chrome.sln解决方案
A、使用如下内容自己手动新建一个*.bat,如:CreateBuild.bat批处理文件放在代码存放的路径。
for /f %%a in ('where gclient.bat') do set pwd=%%a
set pwd=%pwd:~0,-11%
set file=%pwd%win_toolchain\data.json
set pwd=%pwd:\=\\%
echo {"runtime_dirs": ["%pwd%win_toolchain\\vs2013_files\\sys64", "%pwd%win_toolchain\\vs2013_files\\sys32"], "path": "%pwd%win_toolchain\\vs2013_files", "version": "2013e", "wdk": "%pwd%win_toolchain\\vs2013_files\\wdk", "win8sdk": "%pwd%win_toolchain\\vs2013_files\\win8sdk"} > %file%
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_MSVS_VERSION=2013
set GYP_GENERATORS=msvs-ninja,ninja
set GYP_DEFINES=component=shared_library=windows_sdk_path="C:\Program Files (x86)\Windows Kits\8.1" disable_nacl=1
python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyCV9AOzytWwWCtNE8f7ZV56fP1u9yWwhVU' -Dgoogle_default_client_id='' -Dgoogle_default_client_secret='mLT8XooDODav1OJG5G3bY61d'
如下图6所示:
图6
B、双击执行CreateBuild.bat并等待十几分钟,脚本执行无错误的话,在src/chrome/路径下会生成chrome.sln解决方案,如下图7所示:
图7
生成cef.sln解决方案
进入src/cef路径执行cef_create_projects.bat批处理文件并生成cef.sln解决方案,如下图8所示:
图8
编译方法
l 编译前需要修改以下内容
A、 修改src\build\common.gypi,在大概5401行追加内容:
4756,4702,4273,4819,2220,
如下图9所示:
图9
B、 修改D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xtree文件大概14行追加内容:#pragma warning(disable: 4702)
如下图10所示:
图10
l 执行编译
方法1:编译可以使用命令行在src/路径下使用njia编译,如编译cefclient,可使用如下命令:
cd /path/to/chromium/src
ninja -C out/Debug cefclient
方法2:打开cef.sln解决方案,生成指定项目,如:cefclient项目。
如下图11所示:
图11
默认编译的是32位的执行文件(Debug或Release),如果要编译64位程序可参考官网的说明文档。执行文件默认存放在src\out\Debug或者src\out\Release路径下。
(温馨提醒:大概需要编译4~5个小时…).
生成cefclient.exe执行效果
如下图12所示:
图12
参考链接
中文chromium源码下载+编译:
官网chromium版本和编译相关:
http://dev.chromium.org/developers/calendar
http://dev.chromium.org/developers/how-tos/get-the-code
http://dev.chromium.org/developers/how-tos/build-instructions-windows
CEF相关:
https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding.md
https://bitbucket.org/chromiumembedded/cef/src/b1dff4cc77fe71e59032e3ef003ba5615982a558?at=2272
http://www.magpcss.org/ceforum/viewtopic.php?f=6&t=12595
git使用相关:
6VPN相关:
http://115.28.149.236:999/register.html
展开阅读全文