当前位置: 首页 > news >正文

添加组件到idf项目中

在 ESP-IDF 工程里,把“旧驱动”从工程里剔除、再把“新驱动”放进components/作为组件,核心就是两件事:组件目录结构 + CMake 注册/依赖关系。你给的这个工程本身就是标准 ESP-IDF 工程结构(根目录有components/main/、顶层CMakeLists.txt)。

下面按“最常见、最稳”的做法给你一套直接可落地的步骤。


1) 把新驱动做成一个组件(放到 components 里)

在工程根目录新建:

components/new_driver/

CMakeLists.txt

include/

new_driver.h

src/

new_driver.c (或 .cpp)

components/new_driver/CMakeLists.txt示例(最常用写法):

idf_component_register(

SRCS

"src/new_driver.c"

INCLUDE_DIRS

"include"

REQUIRES

driver

)

ESP-IDF 的 build-system 会自动扫描PROJECT_DIR/components下的组件并参与构建;顶层CMakeLists.txt默认甚至可以非常“极简”。


2) 让 main(或其它模块)改用新驱动

情况 A:旧驱动本来就是一个组件

比如旧驱动在components/old_driver/

  • 代码里把#include "old_driver.h"改成#include "new_driver.h"

  • main/CMakeLists.txt里显式声明了依赖(有些项目会写),把REQUIRES old_driver改为REQUIRES new_driver

main/CMakeLists.txt常见形态举例:

idf_component_register(SRCS "main.c"

INCLUDE_DIRS "."

REQUIRES new_driver)

提醒:REQUIRES/PRIV_REQUIRES不要依赖CONFIG_xxx做条件判断(ESP-IDF 依赖展开阶段更早),否则很容易“配置生效但依赖没带上”。

情况 B:旧驱动代码散落在 main/ 里(不是组件)

那就把旧驱动源文件从main/CMakeLists.txtSRCS列表里移除,把这些源文件移到components/new_driver/src/,头文件移到components/new_driver/include/,再按上面注册即可。


3) “取消原有驱动”的三种方式(选一种)

✅ 最推荐:直接删掉或改名旧组件目录

如果旧驱动是components/old_driver/

  • 直接删除该目录,或改名(避免同名组件被扫描到)

这是最干净的“取消”。

✅ 可控做法:顶层 CMakeLists 用 EXCLUDE_COMPONENTS 排除

如果你暂时不想删目录(比如留着对比),可以在顶层CMakeLists.txt里,在include(project.cmake)之前加:

set(EXCLUDE_COMPONENTS old_driver)

cmake_minimum_required(VERSION 3.16)

include($ENV{IDF_PATH}/tools/cmake/project.cmake)

project(RoPet_ESPS3_AI_EYE)

EXCLUDE_COMPONENTS在 ESP-IDF CMake build 体系里就是用来把组件从构建列表里排除的(社区/官方 issue 里也常用这个方式)。

注:它主要减少“参与构建/编译”的组件,是否减少最终 bin 大小取决于链接裁剪与实际引用关系。

✅ 如果旧驱动来自 managed_components(组件管理器下载的)

不要改managed_components/(官方建议避免手改),做法是:

  1. 把它复制到components/下改成你的版本(同名可覆盖优先级)

  2. idf_component.yml(如果项目用了)里移除该依赖

  3. idf.py reconfigure或删build/重配

ESP-IDF 文档明确提到:需要改 managed 组件时应复制到components,并且“同名组件按优先级覆盖”;覆盖后要reconfigure


4) 顶层 CMakeLists.txt 需要怎么改?

大多数情况下不需要改。
因为components/本来就是默认扫描目录,顶层 CMakeLists 最小只要三行也能工作。

你只有在下面两种情况才需要动顶层 CMakeLists:

  • 新驱动不放在components/,而放在别的目录:用EXTRA_COMPONENT_DIRS加路径(文档里有说明)。

  • 你想“保留旧驱动目录但不编译”:用上面的EXCLUDE_COMPONENTS


5) 最后别忘了:清理 + 重配一次

组件增删/覆盖后,按文档建议做一次:

idf.py fullclean

idf.py reconfigure

idf.py build

(或直接删除build/目录再idf.py build


如果你把“旧驱动”的名字(组件目录名或源文件路径)贴出来,比如它在components/xxx还是main/xxx,我可以按你这个工程的实际结构,把要改的文件清单 + 每个 CMakeLists 具体改哪几行直接给你对照版。

http://www.jsqmd.com/news/346295/

相关文章:

  • AI搜索流量争夺战:武汉GEO优化公司实力解析与选型干货 - 品牌评测官
  • 绞磨机5吨型号 长云科技 响箭5号PLUS
  • 第1章 Java语言概述----Java语言的环境搭建
  • 2026中国软件技术发展洞察与趋势预测报告:AI领衔738亿融资+量子/低空飞行/星地互联网十大核心趋势
  • 第1章 Java语言概述----开发体验— HelloWorld
  • 8吨机动绞磨
  • 2026年摇摆筛厂家权威推荐:圆形/方形/摇摆筛振动筛设备源头厂家精选 - 品牌推荐官
  • 桂花网蓝牙网关M1500-XT 企业级全场景蓝牙连接解决方案
  • AB实验高级必修课(四):逻辑回归的“马甲”、AUC的概率本质与阈值博弈
  • 解决蛋白质构象异质性的原子级建模挑战!David Baker团队PLACER框架解析 - 指南
  • 参考文献崩了?8个AI论文写作软件测评:专科生毕业论文+开题报告神器推荐
  • 高并发指标中台选型:Aloudata CAN 横向扩展与架构稳定性深度评估
  • JYLN061 LORA无线数传终端:轻松代替有线485,适配恶劣工业环境
  • 评选和信通购物卡回收正规平台标准与前三平台解析 - 淘淘收小程序
  • 2026 论文写作工具红黑榜:AI 软件怎么选?一篇讲透
  • 2026最新虾青素保健品企业top5推荐!国内优质虾青素保健品源头厂家权威榜单发布,精准适配备孕男女/国内试管/孕妇专用/养生宝妈/中青年抗衰需求 - 品牌推荐2026
  • LORA无线数传电台模块
  • 张江电子吸塑托盘厂家:电子元件的 “安全管家”上海广舟
  • 铜川市英语雅思培训机构推荐?2026权威测评出国雅思辅导机构口碑榜单 - 老周说教育
  • 具身智能构建统一跨模态表示空间的方法
  • 铜川市英语雅思培训机构推荐|2026权威测评出国雅思辅导机构口碑榜单 - 老周说教育
  • 课程论文通关密码:虎贲等考 AI 72 小时速通高分,拒绝无效熬夜
  • 汽车脏污检测与识别 - YOLO11-C3k2-PSFSConv优化模型详解
  • 手把手教你实现:当 GitHub 收到 Star 后,通过企微外部群自动通知
  • 2026广州SAT暑假封闭营推荐哪家?哪家培训机构能冲刺高分 - 博客万
  • 数据不撒谎,但你用对工具了吗?虎贲等考AI让数据分析从“拦路虎”变“加分项”
  • 铜川市英语雅思培训机构推荐;2026权威测评出国雅思辅导机构口碑榜单 - 老周说教育
  • Cell | 填补空白!首张脑细胞类型特异性溶酶体蛋白图谱揭示神经疾病新机制
  • 阅读
  • 科研绘图 “破壁” 指南!虎贲等考 AI:数据一键可视化,期刊级图表 10 分钟速成