为什么使用VS2017编译?
因为VS2017更强大,编译速度更快,C++支持性最好。
VS2013无法编译libcef2623,C++新语法部分不支持,需要安装sp4补丁。
方便与其他VS2017项目整合。VS2017编译完的lib,测试VS2013,VS2015也能使用使用。
已经有编译过Chrome,libcef的经验和多年的编译经验判断,VS2017是更好的选择。
cef2623版本说明,官方最后一个支持xp的,源码数在12000左右。(添加mp3,mp4编译通过)
cef3202版本说明,官方最后一个支持VS2015U3的,源码数在32000左右。(添加mp3,mp4编译通过)
1、下载 automate-git.py
https://bitbucket.org/chromiumembedded/cef/raw/master/tools/automate/automate-git.py
2、下载源码
python automate-git.py --download-dir=D:\chromium\source --branch=2623 --no-build --no-distrib --force-clean
运行后下载,开始自动下载cef,chromium,depot_tools
下载depot_tools到D:\chromium\source\depot_tools
下载cef到D:\chromium\source\cef
下载chromium到D:\chromium\source\chromium
全部下载完毕需要20G以上的控件,大部分时间在下载D:\cef2623\chromium\src\third_party
3、打开chromium\src\build\common.gypi,搜索10.0.10240.0替换为 10.0.17134.0
4、编译脚本
set CEF_USE_GN=0
set GN_DEFINES=is_official_build=true ffmpeg_branding=Chrome proprietary_codecs=true
set GYP_DEFINES=buildtype=Official
set GYP_MSVS_VERSION=2017
set CEF_ARCHIVE_FORMAT=tar.bz2
set GYP_GENERATORS=ninja,msvs-ninja
set GN_ARGUMENTS=--ide=vs2017 --sln=cef --filters=//cef/*
set WIN_CUSTOM_TOOLCHAIN=1
set VS_ROOT=C:\Program Files (x86)\Microsoft Visual Studio\2017
set SDK_ROOT=C:\Program Files (x86)\Windows Kits\10
D:\cef2623\depot_tools\win_tools-2_7_6_bin\python\bin\python.exe D:\cef2623\automate-git.py --download-dir=D:\cef2623 --branch=2623 --no-update --no-debug-build --build-log-file --verbose-build --force-distrib --force-build
5、编译生成的skia、pdfium
6、gperf.exe错误
gperf.exe加入到path
cd D:\cef2623\chromium\src\third_party\WebKit\Source\platform\
gperf.exe "--key-positions=*" "-D" "-s" "2" "ColorData.gperf" >ColorData.cpp
复制ColorData.cpp到D:\cef2623\chromium\src\out\Release\gen\blink\platform\ColorData.cpp
打开D:\cef2623\chromium\src\out\Release\obj\third_party\WebKit\Source\platform\make_platform_generated.ninja
修改为
在我的CSDN资源有这个文件下载
7、libcmt 问题,这个问题发了好长时间才解决,特别说明下
VS2015,VS2017不支持脚本chromium\src\base\allocator\prep_libc.py
[15/42] ACTION libcmt: libcmt_1f6442be6c83cd3f76ccf7a8626eb14a
FAILED: gen/allocator/libcmt.lib
D:\cef2623\depot_tools\win_tools-2_7_6_bin\python\bin\python.exe gyp-win-tool ac
tion-wrapper environment.x86 libcmt_target_libcmt_1f6442be6c83cd3f76ccf7a8626eb1
4a..rsp ..\..\base\allocator
Traceback (most recent call last):
File "prep_libc.py", line 87, in <module>
sys.exit(main())
File "prep_libc.py", line 62, in main
shutil.copyfile(os.path.join(vs_install_dir, 'libcmt.lib'), output_lib)
File "D:\cef2623\depot_tools\win_tools-2_7_6_bin\python\bin\lib\shutil.py", li
ne 82, in copyfile
with open(src, 'rb') as fsrc:
IOError: [Errno 2] No such file or directory: 'C:\\Program Files (x86)\\Microsof
t Visual Studio\\2017\\VC\\lib\\libcmt.lib'
解决方法
将替换函数设置为空
cobjfiles = []
cppobjfiles = []
8、编译过程动画
9、启动cefclient,显示 Page failed to load.
URL: https://www.google.com.hk/?gws_rd=cr,ssl
Error: UNKNOWN (-150)
X.509 Certificate Information:
原因:证书验证错误
解决方法添加启动参数 --ignore-certificate-errors
10、xp下测试
11、专业解决各类问题,有问题的可以在评论留QQ