从源码编译cef-chromium的正确步骤

之前编译过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,继续编译。

接来下又会出现编译错误停止,这就是第二个坑了:

[6/9584] ACTION Copying D3D Compiler DLL...
FAILED: E:\cef-chromium\depot_tools\python276_bin\python.exe gyp-win-tool action-wrapper environment
.x86 copy_compiler_dll_target_copy_dll_d5e7737f8056aa69e632ead4d36d2ac1..rsp ..\..\third_party\angle
\src

ACTION Copying D3D Compiler DLL
说明这是个拷贝动作出现错误,进入目录:

cd E:\cef-chromium\chromium\src\third_party\angle\src

发现有个copy_compiler_dll.bat,编辑打开此文件,发现有一个拷贝d3dcompiler_46.dll的命令,

直接把这个命令删除即可,于是copy_compiler_dll.bat的内容变成了这样:

@echo off
set _arch=%1
set _arch=%_arch:Win32=x86%
改然后切换到命令行,输入ninja,继续编译。

接下来就是漫长的编译过程,根据CPU性能来决定编译时间,通常需要2~6小时。

到最后快编译完成时,又出现了一个错误,编译停止了,这是最后一个坑:

e:\cef-chromium\chromium\src\cef\libcef\browser\chrome_scheme_handler.cc(262) : error C2065: “None
”: 未声明的标识符


出问题的是这一句:

parser.Add("CEF",base::StringPrintf("%d.%d.%d",CEF_VERSION_MAJOR,CHROME_VERSION_BUILD,CEF_REVISION));

这其实是

CEF_REVISION被定义成了None造成的

打开E:\cef-chromium\chromium\src\cef\include\cef_version.h

可看到

#define CEF_REVISION None
而这个None却未被定义。

因此,直接改成

#define CEF_REVISION 1930
然后保存。切换到控制台,输入ninja继续编译。
最后的链接需要花不少时间,最终还是编译成功了。

有图为证,看一下编译结果吧:



VS2013命令行需要设置的变量:
set DXSDK_DIR=C:\Program Files (x86)\Microsoft DirectX SDK (August 2006)
set GYP_GENERATORS=ninja,msvs-ninja
set GYP_MSVS_VERSION=2013
set PATH=K:\cef-chromium\depot_tools;D:\vc2013\bin;D:\vc2013\sdk\Perl516\bin;D:\vc2013\PlatformSDK_8.1\bin\x86;D:\vc2013\sdk\Python278;D:\vc2013\sdk\Python278\DLLs;D:\vc2013\sdk\gles\bin;D:\vc2013\sdk\icu\bin;D:\vc2013\sdk\ruby\bin;D:\vc2013\sdk\tbb\bin;D:\vc2013\sdk\WMDM\lib;D:\vc2013\sdk\git\bin;D:\DirectXSDK2010\Utilities\bin\x86;D:\vc2013\sdk\cmake\bin;D:\vc2013\sdk\gyp;D:\cef_binary_3.2272.2077_windows32\Release;D:\vc2013\sdk\duilib\bin;D:\vc2013\sdk\irrlicht\bin;D:\vc2013\sdk\cef-normal;%PATH%


set INCLUDE=D:\vc2013\sdk\angle\include;D:\vc2013\include;D:\vc2013\PlatformSDK_8.1\Include\um;D:\vc2013\include;D:\vc2013\PlatformSDK_8.1\Include\shared;D:\vc2013\sdk\openvg\include;D:\vc2013\sdk\opengl\include;D:\vc2013\sdk\ruby\include;D:\vc2013\sdk\Python278\include;D:\vc2013\sdk\mysql\include;D:\vc2013\sdk\icu\include;D:\vc2013\sdk\atlmfc\include;D:\vc2013\sdk\WMDM\inc;D:\vc2013\sdk\tbb\include;D:\DirectXSDK2010\Include;D:\vc2013\PlatformSDK_8.1\Include\winrt;D:\cef_binary_3.2272.2077_windows32\include;D:\cef_binary_3.2272.2077_windows32;D:\vc2013\sdk\duilib\include;D:\vc2013\sdk\irrlicht\include;D:\vc2013\sdk\cef-normal\inc


set LIB=D:\vc2013\lib;D:\vc2013\sdk\dx11\lib;D:\vc2013\PlatformSDK_8.1\Lib\winv6.3\um\x86;D:\vc2013\sdk\gnuwin32\lib;D:\vc2013\sdk\opengl\lib;D:\vc2013\sdk\tbb\lib\ia32\vc10;D:\vc2013\sdk\ruby\lib;D:\vc2013\atl\lib;D:\vc2013\sdk\Python278\libs;D:\vc2013\sdk\gles\lib;D:\vc2013\sdk\mysql\lib;D:\vc2013\sdk\icu\lib;D:\vc2013\sdk\angle\lib;D:\vc2013\sdk\atlmfc\lib;D:\vc2013\sdk\WMDM\lib;D:\vc2013\sdk\tbb\lib;D:\vc2013\sdk\WMDM\lib;D:\vc2013\sdk\git\lib;D:\DirectXSDK2010\Lib\x86;D:\cef_binary_3.2272.2077_windows32\Release;D:\vc2013\sdk\duilib\Lib;D:\vc2013\sdk\irrlicht\lib;D:\vc2013\sdk\cef-normal\lib


  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值