CEF132编译指南 MacOS 篇 - 获取 CEF 源码 (五)

1. 引言
在完成了所有必要工具的安装和配置之后,我们正式进入获取 CEF132 源码的阶段。对于 macOS 平台,CEF 的源码获取过程需要特别注意不同芯片架构(Intel 和 Apple Silicon)的区别以及版本管理。本篇将作为 CEF132 编译指南系列的第五篇,详细介绍如何在 macOS 系统上获取并准备 CEF 源码,包括创建工作目录、下载自动化脚本以及同步依赖项等步骤。
2. 工作目录准备
2.1 创建目录结构
首先,我们需要创建存放代码和工具的目录结构:
# 创建用于存放 Chromium 和 CEF 源码的目录
mkdir -p ~/code/chromium_git
# 创建用于存放自动化脚本的目录
mkdir -p ~/code/automate
# 进入工作目录
cd ~/code
2.2 目录结构说明
~/code/chromium_git:用于存放 Chromium 和 CEF 的源代码。~/code/automate:用于存放自动化构建和更新脚本。~/code/depot_tools:用于存放 depot_tools 工具集(在之前的步骤中已经创建)。
3. 下载自动化脚本
3.1 获取自动化脚本
cd ~/code/automate
curl -o automate-git.py https://bitbucket.org/chromiumembedded/cef/raw/master/tools/automate/automate-git.py

3.2 创建更新脚本
在 ~/code/chromium_git 目录中创建 update.sh 脚本:
cd ~/code/chromium_gitcat <<EOL > update.sh
#!/bin/bash
# 为 Intel Mac
python3 ../automate/automate-git.py \\--download-dir=/Users/\$USER/code/chromium_git \\--depot-tools-dir=/Users/\$USER/code/depot_tools \\--no-distrib \\--no-build \\--branch=6834 \\--x64-build
# 为 Apple Silicon Mac,替换最后一行为:
# --arm64-build
EOLchmod 755 update.sh

注意:这里我们指定了--branch=6834,对应CEF 132版本
3.3 设置脚本权限
为 update.sh 脚本添加执行权限:
chmod 755 update.sh
4. 拉取源码
4.1 配置环境变量
在拉取源码之前,我们需要配置一些环境变量:
# 设置 CEF 使用 GN 构建系统
export CEF_USE_GN=1# 设置 GN 构建参数
export GN_DEFINES="is_official_build=true use_sysroot=true symbol_level=1"# 设置 CEF 压缩包格式
export CEF_ARCHIVE_FORMAT=tar.bz2# 对于 Apple Silicon Mac,额外添加以下配置
# export GN_DEFINES="is_component_build=true"

4.2 执行更新脚本
现在,我们可以执行 update.sh 脚本来拉取 CEF 源码:
cd ~/code/chromium_git
./update.sh

重要提示:
- 源码下载过程可能需要数小时,具体时间取决于您的网络速度。
- 请确保您的网络连接稳定。
- 下载过程需要大约 150GB 的磁盘空间,请确保您的磁盘有足够的可用空间。
- 下载过程中可能会出现中断,
update.sh脚本支持断点续传,重新运行脚本即可从上次中断的地方继续下载。
5. 源码管理
5.1 验证源码结构
下载完成后,检查目录结构是否正确:
ls -la ~/code/chromium_git/chromium/src
ls -la ~/code/chromium_git/cef
5.2 目录说明
chromium/src:存放 Chromium 的源代码。cef:存放 CEF 的源代码。chromium/src/cef:CEF 的构建目录。
6. 常见问题处理
6.1 网络问题
如果您在中国大陆地区遇到网络连接问题,可能需要配置 Git 代理:
# 设置 HTTP 代理(根据您的实际代理地址修改)
git config --global http.proxy http://your_proxy_address:your_proxy_port
git config --global https.proxy https://your_proxy_address:your_proxy_port# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
将 your_proxy_address 和 your_proxy_port 替换为您实际的代理地址和端口。
如果下载过程中断,可以重新运行 update.sh 脚本,它会自动从断点处继续下载。
6.2 空间问题
如果磁盘空间不足:
- 清理其他不必要的文件,释放磁盘空间。
- 考虑使用外部存储设备。
- 确保至少有 150GB 的可用磁盘空间。
6.3 权限问题
如果遇到权限问题,可以尝试修复文件权限:
sudo chown -R $(whoami) ~/code/chromium_git
chmod -R u+w ~/code/chromium_git
7. 结语
通过本篇的详细步骤,您已经成功获取并准备好了 CEF132 的源码。这个过程虽然看似简单,但正确的配置和足够的耐心是成功的关键。确保所有步骤都准确执行,这将为后续的编译工作奠定坚实的基础。
在下一篇《CEF132 编译指南 MacOS 篇 - 构建 CEF (六)》中,我们将详细介绍如何在 macOS 环境下配置和执行 CEF132 的编译过程,包括设置特定的 SDK 版本和编译参数等内容。让我们继续这段激动人心的 CEF 编译之旅,为构建功能强大的桌面应用打下坚实的基础!
相关文章:
CEF132编译指南 MacOS 篇 - 获取 CEF 源码 (五)
1. 引言 在完成了所有必要工具的安装和配置之后,我们正式进入获取 CEF132 源码的阶段。对于 macOS 平台,CEF 的源码获取过程需要特别注意不同芯片架构(Intel 和 Apple Silicon)的区别以及版本管理。本篇将作为 CEF132 编译指南系…...
TypeScript装饰器 ------- 学习笔记分享
目录 一. 简介 二. 类装饰器 1. 基本语法 2. 应用举例 3. 关于返回值 4. 关于构造类型 5. 替换被装饰的类 三. 装饰器工厂 四. 装饰器组合 五. 属性装饰器 1. 基本语法 2. 关于属性遮蔽 3. 应用举例 六. 方法装饰器 1. 基本语法 2. 应用举例 七. 访问器装饰器 …...
FPGA实现UltraScale GTH光口视频转USB3.0传输,基于FT601+Aurora 8b/10b编解码架构,提供2套工程源码和技术支持
目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目我这里已有的 GT 高速接口解决方案本博已有的FPGA驱动USB通信方案 3、工程详细设计方案工程设计原理框图输入Sensor之-->OV5640摄像头动态彩条输入视频之-->ADV…...
蓝桥杯篇---实时时钟 DS1302
文章目录 前言特点简介1.低功耗2.时钟/日历功能3.32字节的额外RAM4.串行接口 DS1302 引脚说明1.VCC12.VCC23.GND4.CE5.I/O6.SCLK DS1302 寄存器1.秒寄存器2.分钟寄存器3.小时寄存器4.日寄存器5.月寄存器6.星期寄存器7.年寄存器8.控制寄存器 DS1302 与 IAP25F2K61S2 的连接1.CE连…...
C语言蓝桥杯1003: [编程入门]密码破译
要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母. 例如,字母"A"后面第4个字母是"E"."E"代替"A"。因此,"China"应译…...
【MySQL在Centos 7环境安装】
文章目录 一. 卸载不必要的环境二. 检查系统安装包三. 卸载这些默认安装包四. 获取mysql官⽅yum源五. 安装mysql yum 源,对⽐前后yum源六. 看看能不能正常⼯作七. 安装mysql服务八. .查看配置⽂件和数据存储位置九. 启动服务并查看服务是否存在十. 登陆⽅法十一. 设…...
科技引领未来,中建海龙C-MiC 2.0技术树立模块化建筑新标杆
在建筑行业追求高效与品质的征程中,中建海龙科技有限公司(简称“中建海龙”)以其卓越的创新能力和强大的技术实力,不断书写着装配式建筑领域的新篇章。1 月 10 日,由深圳安居集团规划,中建海龙与中海建筑共…...
玩转观察者模式
文章目录 什么是观察者模式解决方案结构适用场景实现方式观察者模式优缺点优点:缺点:什么是观察者模式 观察者模式通俗点解释就是你在观察别人,别人有什么变化,你就做出什么调整。观察者模式是一种行为设计模式,允许你定义一种订阅机制,可在对象事件发生时通知多个“观察…...
Baklib知识中台构建企业智能运营核心架构
内容概要 在数字化转型的浪潮中,企业对于知识的系统化管理需求日益迫切。Baklib作为新一代的知识中台,通过构建智能运营核心架构,为企业提供了一套从知识汇聚到场景化落地的完整解决方案。其核心价值在于将分散的知识资源整合为统一的资产池…...
Anaconda +Jupyter Notebook安装(2025最新版)
Anaconda安装(2025最新版) Anaconda简介安装1:下载anaconda安装包2: 安装anaconda3:配置环境变量4:检查是否安装成功5:更改镜像源6:更新包7:检查 Jupyter Notebook一.Jup…...
正成为现代城市发展的必然趋势的智慧交通开源了
智慧交通视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。通过人流密集检测…...
手撕Transformer编码器:从Self-Attention到Positional Encoding的PyTorch逐行实现
Transformer 编码器深度解读 代码实战 1. 编码器核心作用 Transformer 编码器的核心任务是将输入序列(如文本、语音)转换为富含上下文语义的高维特征表示。它通过多层自注意力(Self-Attention)和前馈网络(FFN&#x…...
Webpack和Vite插件的开发与使用
在现代开发中一般各公司都有自己的监控平台,对前端而言如果浏览器报错的话就可以通过埋点收集错误日志,再结合sourcemap文件可以帮助我们定位到错误代码,帮助我们排查问题。这里就记录一下之前在webpack和vite两个环境中的插件开发࿰…...
HTTP的状态码
HTTP 状态码 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。 常见的HTTP状态码 …...
Python函数-装饰器
装饰器 写好的函数,不做任何修改,就可以改变执行内容,在其头或尾部加入新的流程代码本质上就是使用函数嵌套,在内部嵌套定义的函数中调用原函数,从而可读在前或后加入新的代码使用的关键: 将原函数作为参数…...
【数据可视化-17】基于pyecharts的印度犯罪数据可视化分析
🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...
HTTP请求报文头和相应报文头
一、HTTP请求报文头 HTTP请求报文由请求行、请求头和请求体组成。请求头包含客户端向服务器发送的附加信息。 1.1 请求行 格式: 方法 请求URI HTTP/版本示例: GET /index.html HTTP/1.1 方法: 请求类型,如GET、POST、PUT、DELETE等。 请求URI: 请求的资源…...
19.4.9 数据库方式操作Excel
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 本节所说的操作Excel操作是讲如何把Excel作为数据库来操作。 通过COM来操作Excel操作,请参看第21.2节 在第19.3.4节【…...
BFS 走迷宫
#include<bits/stdc.h> using namespace std; int a[100][100],v[100][100];//访问数组 n,m<100 struct point {int x;int y;int step; }; queue<point> r;//申请队列 int dx[4]{0,1,0,-1};//四个方向 右下左上 int dy[4]{1,0,-1,0}; int main() { /* 5 4 1 …...
【Linux系统】—— 简易进度条的实现
【Linux系统】—— 简易进度条的实现 1 回车和换行2 缓冲区3 进度条的准备代码4 第一版进度条5 第二版进度条 1 回车和换行 先问大家一个问题:回车换行是什么,或者说回车和换行是同一个概念吗? 可能大家对回车换行有一定的误解࿰…...
大模型智能路由引擎:动态调度多AI模型实现降本增效
1. 项目概述:一个技能模型路由器的诞生最近在折腾大模型应用开发的朋友,估计都绕不开一个核心痛点:如何高效、低成本地管理和调用多个不同能力的AI模型。无论是OpenAI的GPT系列、Claude,还是开源的Llama、Qwen,每个模型…...
RAGxplorer:可视化调试工具,提升检索增强生成系统可观测性
1. 项目概述:RAGxplorer,一个为RAG系统打造的“X光机”如果你正在构建或优化一个基于检索增强生成(RAG)的系统,那么你一定遇到过这样的困惑:为什么用户的问题没有得到预期的答案?是检索的文档不…...
AI与空间计算融合:在Vision Pro上部署与优化机器学习模型的工程实践
1. 项目概述:当苹果Vision Pro遇上开源AI,一场空间计算的“化学反应”最近在GitHub上闲逛,发现了一个挺有意思的项目,叫imclab/Apple-Vision-PRO-AR-VR-XR-AI。光看这个仓库名,信息量就爆炸了,直接把苹果的…...
基于MCP协议构建金融数据服务器:AI Agent与量化分析实践
1. 项目概述:一个面向金融数据处理的MCP服务器最近在折腾一个挺有意思的项目,叫imviky-ctrl/tickerr-mcp。乍一看这个名字,可能有点摸不着头脑,但如果你对金融量化、数据分析或者AI Agent开发感兴趣,那这个项目绝对值得…...
Slidemason:基于AI编程助手本地生成专业演示文稿的React开源方案
1. 项目概述:用你已有的AI编程工具,在本地快速生成专业演示文稿 如果你和我一样,经常需要制作演示文稿,无论是给团队做汇报、向投资人展示项目,还是准备一个技术分享,你肯定知道这活儿有多耗时。从构思结构…...
Agent Input Compiler:本地AI编程助手上下文优化工具详解
1. 项目概述:一个为AI编码工具“编译”上下文的本地优先工具如果你用过Cursor、Claude Code这类AI编程助手,肯定遇到过这样的场景:你想让它帮你修改一个函数,结果它一股脑地把整个项目,甚至node_modules里的package.js…...
基于MCP协议构建AI助手与Google Docs的无缝集成方案
1. 项目概述:为AI助手打通Google Docs的“任督二脉” 如果你和我一样,日常重度依赖Google Docs来撰写技术文档、会议纪要或项目规划,同时又希望AI助手(比如Cursor或Claude Desktop)能直接读取、分析甚至帮你修改这些文…...
基于XAI与盲掩码自监督学习的地震数据去噪技术解析
1. 项目概述:从“看”到“理解”的地震数据净化地震勘探,说白了就是给地球做“CT扫描”。我们通过人工激发地震波,然后在地表接收反射回来的信号,这些信号经过复杂的处理,最终能描绘出地下几千米甚至更深的地层结构。然…...
AI赋能建筑工程电气电子工程:从自动化设计到智能运维的实践指南
1. 项目概述与核心价值在建筑工程这个庞大而复杂的体系中,电气电子工程(EEE)扮演着“神经系统”的角色,它贯穿于建筑的规划、施工、运维全生命周期。然而,这个领域长期面临着效率瓶颈:设计依赖人工经验、能…...
修改寄存器的位操作方法
某一位(不分组):对变量某位清零: a & ~(1 <<N); 对变量某位置1: a | (1 <<N); 对变量某位取反: a ^ (1 <<N); 分组(连续位)的情况:A <…...
