基于ESP-IDF的ESP32开发记录——添加多个自己编写的组件

在第一篇的基础上,经过一段时间的学习,看其他人的视频。

ESPIDF的CMAKE其实还有这个特性:

在这里插入图片描述

主目录下的CMAKElists文件中,箭头的这句include其实就是帮我们包含了idf目录下的cmake文件,包含了有什么用呢?

其实包含了idf目录下的cmakelists文件,间接上就等于包含了idf目录下的components文件夹内的所有组件,这就是为什么main.c可以直接include一些默认组件。

比如:

在这里插入图片描述

freertos这个组件就是idf内官方提供的,如果根目录的cmakelists里面没有那句include,那么main.c是无法直接包含freertos这个组件的。

搞明白了根目录下的cmakelists之后,我们知道项目文件夹内的components是cmake帮我们包含的idf目录下的官方组件,如果我们想要新增自己的组件user_components,那么直接把自己想要添加的组件写在components文件夹内,main文件也能调用到。

如果想要目录更加清爽和规范,按照我个人的编程习惯,我会再新建一个user_components文件夹,用于存放我自己编写的用户组件,并在user_components文件夹内新建了三个自己写的组件,用于存放各模块的功能函数,我将这个文件夹新建在根目录下:

在这里插入图片描述

如果想要在main.c中使用user_system.c里面的函数怎么办呢,按照51的习惯就是先把user_system.h的路径添加到keil的工程目录下,在ESP32中怎么操作呢?

在根目录的cmakelists中添加:

在这里插入图片描述

意思就是添加一个额外的组件目录,即根目录下 “User_components” 这个文件夹 ,至于这个文件夹里面还有二级目录,这个没关系,cmake可以正常找到里面的各个组件的cmakelists。在user_components这个文件夹内有多少个组件,那么就会被包含多少个组件进来工程中,这样就完成了添加多个组件的操作。

在设置额外组件目录的操作中,还可以把组件目录放在其他位置,通过声明组件目录的路径,cmake也能去到相关的目录找出用户编写的组件。

在用户组件这个文件夹内,自己编写的 如组件 system 这个组件的文件夹内,还需要编写这个组件自己的cmakelists,作用就是告诉cmake这个组件内有哪些.h 有哪些 .c 有哪些依赖。写法如下:

idf_component_register( SRCS "user_system.c"
                        INCLUDE_DIRS "."
                        REQUIRES driver)

意思就是:这个组件的.c文件是:user_system.c,需要包含的.h文件是:当前目录下的所有.h后缀的文件,依赖是:driver (ESP-IDF目录components/driver)这个组件。

依赖:意思就是需要告诉cmake 用户写的这个组件 与 被这个组件调用到的其他组件 的依赖关系(谁调用谁),假设user_system.c需要用到user_timer.c中的函数,那么这个requires还需要加多一个依赖关系,变为:

idf_component_register( SRCS "user_system.c"
                        INCLUDE_DIRS "."
                        REQUIRES driver
                                 timer)

基本到这,cmake的简单用法好像已经写完了,项目过程需要用到的新增.c和.h,好像已经实现,下一篇开始点灯吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值