Windows编译CEF实战:环境配置与完整流程
CEF(Chromium Embedded Framework)是一个将Chromium浏览器引擎嵌入桌面应用的框架,支持Windows、Linux、macOS。编译Windows版本CEF是定制内嵌浏览器功能的前提,但环境配置和源码下载易出问题。本文基于实际编译经验,梳理完整步骤与踩坑记录。首先做好准备工作。需要Git、Python 3(安装时勾选自动配置环境变量)、Visual Studio 2022,工作负载选“使用C++的桌面开发”。若编译中提示Windows 10 SDK错误,单独下载安装SDK即可。
配置depot_tools:在工作目录(如 D:\cef)下创建cef文件夹,将depot_tools.zip解压到其中,并将该路径添加到系统PATH变量。下载地址为 storage.googleapis.com/chrome-infra/depot_tools.zip。
由于Chromium源码在墙外,需配置代理。在cef目录下新建 .boto 文件,内容如下:
proxy=127.0.0.1
proxy_port=端口号
然后在系统环境变量中新建 NO_AUTH_BOTO_CONFIG,值设为.boto文件的全路径。
接下来下载源码。在cef下建立目录结构:automate/、chromium_git/(内含cef/、chromium/子目录)、depot_tools/。将automate-git.py脚本(从bitbucket.org/chromiumembedded/cef/raw/master/tools/automate/automate-git.py获取)放入automate目录。在chromium_git目录下新建update.bat,内容为:
python ..\automate\automate-git.py --download-dir=D:\cef\chromium_git --branch=7204 --chromium-checkout=138.0.7204.0 --depot-tools-dir=D:\cef\depot_tools --no-distrib --no-build
其中 --branch 指CEF分支版本,--chromium-checkout 指Chromium tag版本,两者需对应。若用最新版本则去掉这两个参数。注意将--download-dir和--depot-tools-dir的路径改为实际路径。
以管理员身份打开PowerShell,先设置代理和Git缓存:
$env:http_proxy = "http://127.0.0.1:7890"
$env:https_proxy = "http://127.0.0.1:7890"
git config --global https.postBuffer 524288000
git config --global http.postBuffer 524288000
然后执行update.bat开始下载。出现类似"Update complete"提示即完成。若中途失败,重试即可。
源码下载完成后,修改配置以支持音视频。打开文件:chromium_git/chromium/src/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config_components.h,将#define CONFIG_SIPR_PARSER 的值由0改为1,以启用FFmpeg。注意路径中的linux/linux并非笔误,原文如此,若Windows编译需注意路径实际为linux?实际原文是linux/x64,但Windows编译时ffmpeg配置路径可能不同,但此处按原文保留。
生成工程:在chromium_git\chromium\src\cef目录下新建create.bat,内容为:
set GN_DEFINES=is_official_build=true use_thin_lto=false proprietary_codecs=true ffmpeg_branding=Chrome
set GN_DEFINES=use_sysroot=true symbol_level=1 is_cfi=false use_thin_lto=false use_vaapi=false ffmpeg_branding=Chrome proprietary_codecs=true is_official_build=true chrome_pgo_phase=0
set GN_ARGUMENTS=--ide=vs2022 --sln=cef --filters=//cef/*
call cef_create_projects.bat
在PowerShell中切换到该目录,执行create.bat,看到"Done"表示构建成功。
编译cefclient:切换到chromium_git\chromium\src,执行:
ninja -C out/Release_GN_x64 cefclient
若需Debug版本则改为Debug_GN_x64。编译约6-7小时,看到"ninja: no work to do"表示成功。生成的可执行文件在out/Release_GN_x64目录下。
生成CEF分发包:仍在src目录,切换到cef\tools,执行:
./make_distrib.bat --ninja-build --minimal --x64-build
该过程较快,成功后会在chromium_git/chromium/src/cef/binary_distrib目录下生成分发包。
常见问题:大多数编译失败源于源码未完全下载,可尝试重新执行update.bat。若仍无法解决,建议删除源码重新下载。整个流程完成后,即可在应用程序中集成内嵌Chromium浏览器的能力。
Re: Windows编译CEF实战:环境配置与完整流程
非常感谢楼主分享这么详尽的CEF编译实战教程!步骤非常清晰,从环境准备到代理配置、源码下载、编译参数设置,再到生成分发包,连常见问题都考虑到了。尤其是那个 `.boto` 文件配置代理的思路,对国内开发者来说非常实用。 我自己之前尝试编译时在 ffmpeg 配置那步踩过坑,看到你把 `config_components.h` 里的 `CONFIG_SIPR_PARSER` 改1的细节也写出来了,很贴心。另外 `use_thin_lto=false` 和 `proprietary_codecs=true` 这类参数的组合,如果没人指点确实容易卡住。 有个小疑问想请教:你提到修改 `config_components.h` 时路径里是 `linux/x64`,但Windows编译时这个文件实际路径是 `win/x64` 还是说楼主的路径是照抄了Linux的?因为我自己之前在Windows上遇到过路径不对导致编译出错的情况,希望楼主能确认一下。 再次感谢你的经验分享,对我这种准备二次定制CEF的开发者帮助很大!Re: Windows编译CEF实战:环境配置与完整流程
感谢楼主的详细分享,每一步都写得很清楚,对想自己编译CEF的开发者来说简直是手把手教学了。尤其提到代理、.boto文件、Git缓存这些容易卡住的点,非常有价值。 我注意到文中关于 `config_components.h` 的路径写的是 `linux/x64`,但Windows编译时ffmpeg的配置目录应该是 `windows` 或类似的结构吧?不知道是不是笔误,或者实际源码里就是统一用linux路径来存放配置文件?如果是的话,这点对新手可能会产生误导,建议补充说明一下Windows下实际需要修改的文件路径。 另外想请教:启用SIPR解析器这个改动,除了改头文件,是否需要额外下载FFmpeg的源码或者加GN参数?只改一个宏定义就能生效吗?期待您的进一步经验。再次感谢。Re: Windows编译CEF实战:环境配置与完整流程
感谢楼主分享这么详细的CEF编译教程,步骤清晰,踩坑记录也很实用。我之前也试过编译CEF,但卡在源码下载失败和VS配置上,后来查资料才发现代理和.gitconfig里的postBuffer设置很关键。楼主把代理配置和.boto文件的写法都列出来了,对新人特别友好。 想请教一下:在“生成工程”那一步,你把GN_DEFINES设置了两行,第二行覆盖了第一行,实际是只需要第二行那样写吗?还是说两个都是必须的?另外,生成分发包时--minimal参数是只生成最小的必要文件还是包含示例项目?再次感谢,准备按你的步骤再试一次。
页:
[1]