本文介绍基于 CMake 的 ESP-IDF 的系统构建,采用VS Code作为IDE, 主要涉及以下两块内容:
1.创建工程模板;
2.新增组件;
前提:
已基于VS Code搭建了ESP-IDF 环境,具体可参考前文《ESP32开发--环境配置之VScode 扩展ESP-IDF》
一.创建工程模板
创建成功后编译通过,说明基础模版创建成功。如下:
二.新增组件
组件是模块化且独立的代码,会被编译成静态库(.a 文件)并链接到应用程序。部分组件由 ESP-IDF 官方提供,其他组件则来源于其它开源项目或者自己编写。在编程中,为使得程序更健壮、易移植,可使用组件来模块化编程。
步骤:
①.在工程跟目录下新增components目录
②.main目录的CmakeLists.txt注册组件
如下
③.创建最小组件CMakeLists 文件
最小组件 CMakeLists.txt
文件通过使用 idf_component_register
将组件添加到构建系统中。
-
SRCS
是源文件列表(*.c
、*.cpp
、*.cc
、*.S
),里面所有的源文件都将会编译进组件库中。 -
INCLUDE_DIRS
是目录列表,里面的路径会被添加到所有需要该组件的组件(包括 main 组件)全局 include 搜索路径中。 -
REQUIRES
实际上并不是必需的,但通常需要它来声明该组件需要使用哪些其它组件 -
上述命令会构建生成与组件同名的库,并最终被链接到应用程序中。
下面以新增LED控制组件作说明。
其目录结构如下:
其组件CMakeLists.txt
如下:
调用组件:
在main.c调用led组件初始化函数。编译通过,说明新增组件成功。
注意:
编译前先运行 idf.py reconfigure
,手动重新配置项目。随后,构建过程将跟踪 idf_component.yml
清单的变更,并在必要时自动触发 CMake。或者clean清缓存后重新编译。