http://blog.youkuaiyun.com/hats8888/article/details/53886591
之前编译过cef-chromium的源码,但是找不到之前的源码工程了。幸好压缩源码还存在电脑里。
现在又要编译一下,因为需要定制自己需要的功能,这里就把编译过程记录一下,以免以后还会遇到,也分享给需要的读者。
下载cef-chromium的源码需要到google网站去,但这个网站被国家封了,所幸我通过其它渠道下载了全部源码。
打包的源码在这里下载:
链接:http://pan.baidu.com/s/1pLqAeD1 密码:0b62
我将源码解压到了E盘cef-chromium目录下,路径为:E:\cef-chromium
里面有cef、chromium、depot_tools3个目录。
我的机器是Win7 64位的系统,安装了VS2013和DirectX SDK。
打开VS2013命令行工具,进入路径E:\cef-chromium\chromium\src\cef,然后输入cef_create_projects.bat按回车,
提示Python.bat不是内部或外部命令。
这里是编译依赖工具环境没有配上,在控制台界面输入:
set PATH=E:\cef-chromium\depot_tools;%PATH%
然后再次输入cef_create_projects.bat,就可以生成VS2013的工程了。
但是我不会用VS2013打开进行编译,为什么?因为打开VS2013进行编译,VS2013也是调用ninja进行编译,无法观察到具体的编译细节和进度,就算编译
出现错误了也不会停止,所以最好在命令行下通过ninja进行编译。
切换到VS2013命令行,然后进入目录:
cd E:\cef-chromium\chromium\src\out\Release
然后输入:
ninja
接着就开始编译了。
编译过了一会出现了一个错误:
error:C2220 警告被视为错误。这个是警告等级在捣鬼,需要把工程里的编译警告等级降低!
工程文件很多,需要批量替换,替换工具没有限制,我用QtCreator进行批量替换。
需要把E:\cef-chromium\chromium\src目录下的所有.ninja文件里的/WX换成/W3,这样警告才不会被当做错误处理。
直接替换了去。然后控制台下输入ninja,继续编译。
接来下又会出现编译错误停止,这就是第二个坑了:
说明这是个拷贝动作出现错误,进入目录:
cd E:\cef-chromium\chromium\src\third_party\angle\src
发现有个copy_compiler_dll.bat,编辑打开此文件,发现有一个拷贝d3dcompiler_46.dll的命令,
直接把这个命令删除即可,于是copy_compiler_dll.bat的内容变成了这样:
改然后切换到命令行,输入ninja,继续编译。
接下来就是漫长的编译过程,根据CPU性能来决定编译时间,通常需要2~6小时。
到最后快编译完成时,又出现了一个错误,编译停止了,这是最后一个坑:
e:\cef-chromium\chromium\src\cef\libcef\browser\chrome_scheme_handler.cc(262) : error C2065: “None
”: 未声明的标识符
出问题的是这一句:
这其实是
打开E:\cef-chromium\chromium\src\cef\include\cef_version.h
可看到
而这个None却未被定义。
因此,直接改成
#define CEF_REVISION 1930然后保存。切换到控制台,输入ninja继续编译。
最后的链接需要花不少时间,最终还是编译成功了。
有图为证,看一下编译结果吧: