02-在 ESP-IDF 项目中添加 .c 和 .h 文件的

在 ESP-IDF 项目中添加 .c 和 .h

ESP-IDF(Espressif IoT Development Framework)是一个用于开发基于 ESP32 和 ESP8266 微控制器的嵌入式应用程序的框架。在 ESP-IDF 项目中添加新的 .c 和 .h 文件是很常见的,但要确保这些文件能够正确地被编译和链接到项目中,需要适当地配置 CMakelists.txt 文件。

CMakelists.txt 文件

首先,定位到你的 ESP-IDF 项目目录下的 main 目录,你会找到一个名为 CMakeLists.txt 的文件。这个文件是项目的 CMake 构建系统配置文件。
在这里插入图片描述

添加新的源文件

假设你要添加一个名为 LED.c 的源文件和一个名为 LED.h 的头文件到你的项目中。

在项目文件下下创建一个新的目录,例如 components,然后在 components 目录下创建一个名为 LED 的子目录。

LED 目录下,放置你的 LED.cLED.h 文件。
在这里插入图片描述

编写 CMakelists.txt

打开 components 目录下的 CMakeLists.txt 文件,如果没有这个文件,你可以创建一个。

下面是一个简单的示例 CMakeLists.txt 文件

1. 设置源文件目录和包含目录

在 ESP-IDF 项目中,首先要设置源文件目录和包含目录。这告诉编译器在哪里可以找到源文件和头文件。

在这里插入图片描述

LED 的目录下,其中包含了我们要添加到项目中的源文件和头文件。

  • set(src_dirs LED):这一行设置了一个名为 src_dirs 的变量,其中包含了要编译的源代码目录。在这种情况下,只有一个目录 LED 被设置为源代码目录。
  • set(include_dirs LED):这一行设置了一个名为 include_dirs 的变量,其中包含了需要包含的头文件目录。与源代码目录类似,只有一个目录 LED 被设置为头文件目录。
  • set(requires driver):这一行设置了一个名为 requires 的变量,用于指定当前组件所需的其他组件。在这里,指定一个名为 driver 的组件是必需的。

2. 注册组件和设置依赖项

一旦我们设置了源文件目录和包含目录,我们就可以使用 idf_component_register 函数来注册组件并设置依赖项。

在这里插入图片描述

idf_component_register 是 ESP-IDF 提供的一个函数,用于注册组件。通过这个函数,你可以指定该组件的源文件目录、头文件目录和它所依赖的其他组件。

  • SRC_DIRS 参数使用了之前设置的 src_dirs 变量
  • INCLUDE_DIRS 参数使用了 include_dirs 变量
  • REQUIRES 参数使用了 requires 变量。

3. 设置编译选项

设置编译选项是优化代码和确保代码质量的重要步骤。在 ESP-IDF 中,我们可以使用 component_compile_options 函数来设置编译选项。以下是一个示例:

在这里插入图片描述

启用了快速数学运算优化 (-ffast-math),设置了编译器优化级别为 3 (-O3),并禁用了与格式相关的警告。-Wno-error=format=-Wno-format 选项禁用了关于格式错误的警告,并防止它们被视为错误。这些选项可以根据需要进行调整,以优化组件的编译和运行性能。

CMakeLists.txt完整代码

大家可以参考下面的示例进行修改自己的项目,下面两种写法都可以

set(src_dirs
            LED)

set(include_dirs
            LED)

set(requires
            driver)

idf_component_register(SRC_DIRS ${src_dirs} INCLUDE_DIRS ${include_dirs} REQUIRES ${requires})

component_compile_options(-ffast-math -O3 -Wno-error=format=-Wno-format)
idf_component_register(
    SRCS "PWM/pwm.c"
    INCLUDE_DIRS "PWM"
    REQUIRES driver
)

保存并构建项目

别忘了保存你的 CMakeLists.txt 文件,并重新构建你的 ESP-IDF 项目。大功告成,LED.h LED.c
两个文件成功添加到项目中了

  • 22
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁子希

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值