news 2026/11/2 8:16:53

添加组件到idf项目中

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
添加组件到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.txt的SRCS列表里移除,把这些源文件移到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 具体改哪几行直接给你对照版。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/1 5:49:18

全网最全 10个降AI率工具测评:专科生降AI率必备指南

在当前高校教育中,AI写作工具的广泛应用让论文创作变得更加高效,但也带来了AIGC率偏高的问题。尤其是对于专科生来说,如何在保证论文质量的同时有效降低AI痕迹和查重率,成为了一个亟需解决的难题。这时候,AI降重工具就…

作者头像 李华
网站建设 2026/11/1 2:50:01

8吨机动绞磨

长云科技响箭8号柴油款机动绞磨机专为严苛的无电力供应环境设计,其核心采用柴油机动力,扭矩强劲且运行稳定,为山区、野外等复杂地形的重型牵引作业提供了可靠的安全保障。 其搭载柴油机动力,额定牵引力高达80KN,扭矩强…

作者头像 李华
网站建设 2026/10/30 23:12:22

当我决定把家安在凤五:一位改善者的选房心路

每一次决定换房,都像是对未来生活的一次郑重投票。在西安看了大半年房子,从新区看到主城,从概念看到实景,最终让我停下脚步的,是招商林屿缦岛。这篇文字,想从一个普通购房者的角度,聊聊我看到的…

作者头像 李华
网站建设 2026/11/1 12:08:02

2026 论文写作工具红黑榜:AI 软件怎么选?一篇讲透

红榜优先选毕业之家、PaperRed、豆包,适配国内学术规范;黑榜避开低质免费工具、无真实引用平台、过度依赖全文生成的工具,优先按需求匹配三维模型(需求匹配度 - 数据可信度 - 成本承受力)。 一、红榜:10 款…

作者头像 李华
网站建设 2026/10/30 13:26:28

9 款 AI 写论文哪个好?实测后这款毕业论文神器凭硬实力出圈

毕业季选 AI 写论文工具,堪比 “大海捞针”—— 有的文献虚构无法溯源,有的生成内容空洞无数据支撑,有的只能简单润色没实质帮助。为帮大家避坑,我们实测了 9 款主流 AI 写论文工具(Aibiye、Aicheck、Askpaper、OpenAI…

作者头像 李华
网站建设 2026/10/30 22:49:41

虎贲等考 AI:以 AI 重构学术创作,全流程赋能论文写作新范式

在学术探索的道路上,无数学生与科研工作者曾深陷选题迷茫、文献繁杂、数据空洞、查重反复的困境。传统论文写作中,工具功能碎片化、素材真实性难保障、全流程衔接不畅等问题,严重消耗着创作精力。虎贲等考 AI 智能写作平台(官网&a…

作者头像 李华