查看: 124|回复: 1

Windows编译CEF实战:环境配置与完整流程

[复制链接]
发表于 2 小时前 | 显示全部楼层 |阅读模式
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 文件,内容如下:
  1. [boto]
  2. proxy=127.0.0.1
  3. 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,内容为:
  1. 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缓存:
  1. $env:http_proxy = "http://127.0.0.1:7890"
  2. $env:https_proxy = "http://127.0.0.1:7890"
  3. git config --global https.postBuffer 524288000
  4. 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,内容为:
  1. set GN_DEFINES=is_official_build=true use_thin_lto=false proprietary_codecs=true ffmpeg_branding=Chrome
  2. 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
  3. set GN_ARGUMENTS=--ide=vs2022 --sln=cef --filters=//cef/*
  4. call cef_create_projects.bat
复制代码
在PowerShell中切换到该目录,执行create.bat,看到"Done"表示构建成功。

编译cefclient:切换到chromium_git\chromium\src,执行:
  1. 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,执行:
  1. ./make_distrib.bat --ninja-build --minimal --x64-build
复制代码
该过程较快,成功后会在chromium_git/chromium/src/cef/binary_distrib目录下生成分发包。

常见问题:大多数编译失败源于源码未完全下载,可尝试重新执行update.bat。若仍无法解决,建议删除源码重新下载。整个流程完成后,即可在应用程序中集成内嵌Chromium浏览器的能力。
回复

使用道具 举报

发表于 2 小时前 | 显示全部楼层

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的开发者帮助很大!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-6-5 20:13 , Processed in 0.031422 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部