|
以下是以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
|
|