| 
 | 
	
 
以下是以cef_91.0.4472为例进行的流程说明 
 
下载代码前的准备 
Git安装 
Python安装,至少2.7版本,最新的版本好像自带python,可以先不装,后面如果脚本运行不成功在装,因为我自己以前就已经装好了,就没有验证过 
Visual Studio安装,根据编译的cef版本,确定安装vs的哪个版本,可以查询https://bitbucket.org/chromiumem ... nchesAndBuilding.md 确定具体的vs版本,例如编译chromium version 91,就需要安装vs2019 16.8.4+ 
WINDOW SDK 和vs一样,需要注意版本号。chromium version 91需要安装10.0.19041 
注意如果安装了多个版本的vs,多个WIN SDK,需要注意环境的配置,如果不确定和不知道怎么配,最好保持系统环境单一。 
 
代码下载 
automate-git.py脚本的下载 
    下载地址: https://bitbucket.org/chromiumem ... ate/automate-git.py 
 
将下载好的automate-git.py放到准备好的文件目录里中,例如I:\cef\source。 
 
代码下载 
建立脚本download.bat。脚本内容为: 
 
python automate-git.py --download-dir=I:\cef\source --branch=4472 --no-build 
 
参数说明: 
 
--no-distrib --force-clean 
 
--download-dir   代码保存路径,如I:\cef\source。 
 
--branch=4472 需要下载的代码分支,分支代号可以查询官方网站https://bitbucket.org/chromiumem ... nchesAndBuilding.md 
 
--no-build  不编译代码 
 
--no-distrib   不进行打包发布 
 
--force-clean 用于清理chromium和cef的一些检出信息,如果下载失败,重新执行下载时,需要带上这个参数来清理一些信息,否则会失败。 
 
其他参数可以通过命令行输入命令automate-git.py --help 查看所有的。 
 
代码下载过程很长,在国内需要稳定的vpn,如果网络很好,大概需要6到7个小时,网络不好就可能在中间下载时各种断掉,需要重新下载。 
 
下载过程中,会先下载depot_tools,然后下载cef,最后下载chromium目录,整体大小在55G到60G左右,下载代码前需要准备足够的空间,后续编译也需要大概10G的内存。 
 
编译代码 
编译前准备 
        将depot_tools目录配置到环境变量PATH中,这一步我没有验证,可能最新版本不需要设置,在脚本中自动配置了。这是我在初期查询其他人编译3.2623时进行的尝试。 
 
执行编译脚本 
        新建脚本build.bat。脚本内容为(除了ffmpeg_branding参数外,其他内容都是从官网文档中获取): 
 
set GN_DEFINES=is_official_build=true use_thin_lto=false proprietary_codecs=true ffmpeg_branding=Chrome  
 
set GYP_MSVS_VERSION=2019 
 
set CEF_ARCHIVE_FORMAT=tar.bz2 
 
automate-git.py --download-dir=I:\cef\source --branch=4472 --minimal-distrib --client-distrib --no-update --force-build 
 
proprietary_codecs=true ffmpeg_branding=Chrome 为打开支持视频播放参数。网上有其他编译方式,可以查下,目前通过设置这两个参数满足了基本的mp3、mp4等常见的视频播放支持。 
 
编译时间根据编译选项不同,长短不一,如果只编译release,大概需要6小时左右,debug时间更长。 
 
在编译91版本中,如果环境配置正确,中间编译过程没有任何需要改动的地方。 
 
编译完成后,如果加上了打包选项--client-distrib,会生成cef_binary_91.1.22+gc67b5dd+chromium-91.0.4472.124_windows32.tar.bz2 压缩包。 
 
libcef_dll_wrapper.lib的编译 
通过CMakeLists.txt生成vs工程。解压上面生成的cef_binary_91.1.22+gc67b5dd+chromium-91.0.4472.124_windows32.tar.bz2文件。 
 
根据编译环境选择不同的生成参数,如果想生成vs2019工程,可以在命令行中这样执行 cmake -G "Visual Studio 16" -A Win32 ,其他选项可以查看CMakeLists.txt中的描述,MacOS, Linux等环境都有对应的说明。 
 
在此之前,要确定libcef_dll_wrapper.lib是否需要debug版本,以及引用该文件的工程项目对_HAS_ITERATOR_DEBUGGING=0设置是否敏感,libcef_dll_wrapper.lib默认会添加_HAS_ITERATOR_DEBUGGING=0预编译,引用工程对该设置敏感,将会在编译阶段出现编译错误: 
 
'_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' 
 
或者' 
 
_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0'。 
 
解决这个问题,可以将camake\ cef_variables.cmake文件中的这几行注释掉: 
 
  list(APPEND CEF_COMPILER_DEFINES_DEBUG 
 
      _HAS_ITERATOR_DEBUGGING=0   # Disable iterator debugging 
 
      ) 
 
注释后重新生成工程编译即可。 
 
在编译自定义的webcore.exe 和clien.exe(或者dll)时,需要在编译完成后,将compatibility.manifest和cefclient.exe.manifest 打包进自定义的webcore.exe 和clien.exe中,可以在生成事件->后期生成事件->命令行中添加命令行: 
 
setlocal 
 
mt.exe -nologo -manifest "%CURRENT_SOURCE_DIR%//%TargetName%.%EX%.manifest" "%CURRENT_SOURCE_DIR%//compatibility.manifest" -outputresource:" %CURRENT_OUTPUT_DIR%//% TargetName %.%EX%";#1 
 
if %errorlevel% neq 0 goto :cmEnd 
 
:cmEnd 
 
endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone 
 
:cmErrorLevel 
 
exit /b %1 
 
:cmDone 
 
if %errorlevel% neq 0 goto :VCEnd 
 
TargetName : 生成的文件名称,例如webcore 
 
EX: 生成的文件格式后缀,例如dll,exe 
 
CURRENT_SOURCE_DIR:当前工程源码目录,也是放compatibility.manifest和webcore.exe.manifest目录 
 
CURRENT_OUTPUT_DIR:生成目录 
 
compatibility.manifest和cefclient.exe.manifest文件可以在cefclient\resources\win目录中找到,cefclient.exe.manifest需要改成你自己的目标文件名称,例如webcore.exe,就需要将cefclient.exe.manifest改成webcore.exe.manifest。如果不进行manifest压缩这一步,会导致cef版本号对不上,cef初始化失败。导致cef初始化失败的原因,还可能是旧版本的cache文件没有清理,会出现在debug调试状态下。 
 
已经编译好的91.0.4472版本,不过只编译了x86的debug和release。支持MP3,MP4,H264等视频播放 
 
cef_binary_91.1.22+gc67b5dd+chromium-91.0.4472.124_windows32.tar.bz2 
 
链接: https://pan.baidu.com/s/16YkKVuHh-xEpHhUFtitC-w 
 
提取码: wdpc  
 
release pdb文件: 
 
链接: https://pan.baidu.com/s/11s4BEdMxM8HoOjJ_UtTZ8Q 
 
提取码: qr27  
 
debug pdb文件: 
 
链接: https://pan.baidu.com/s/1RjVWPNd3dkmPJVJCqCs2Eg 
 
提取码: 29wu 
 
 
 
 
 
源码较大,放到了阿里云网盘上,但不支持大文件分享,需要私聊。 
 
 参考的资料: 
 
https://redrain.blog.csdn.net/ar ... -baidujs-2.nonecase 
 
https://blog.csdn.net/diycom/article/details/80190345 
 
https://blog.csdn.net/wrzfeijianshen/article/details/89928853 
 
https://blog.csdn.net/zhangpeng_linux/article/details/85858746 
———————————————— 
版权声明:本文为CSDN博主「whhx2021」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 
原文链接:https://blog.csdn.net/whhx2021/article/details/119027875 
 
 |   
 
 
 
 |