参考https://docs.espressif.com/projects/esp-idf/zh_CN/v4.2/esp32/api-guides/build-system.html
概述
ESP-IDF 可以显式地指定和配置每个组件。在构建项目的时候,构建系统会前往 ESP-IDF 目录、项目目录和用户自定义目录(可选)中查找所有组件,允许用户通过文本菜单系统配置 ESP-IDF 项目中用到的每个组件。在所有组件配置结束后,构建系统开始编译整个项目。
构建需要知道的概念
项目:包含构建可执行应用程序所需的全部文件和配置,以及其他支持型文件(分区表、数据/文件系统分区和引导程序)的目录。
项目配置:项目目录下的sdkconfig
应用程序:可执行文件,包括固件和引导程序
组件:独立的模块,被编译成.a静态库,链接到应用程序。
目标:硬件平台,如esp32
构建工具
idf.py menuconfig:配置项目
idf.py build:构建当前目录找到的项目,增量式构建,没有修改过的文件不需要再次编译
idf.py clean:清理构建目录, 不删除CMake配置输出和其它文件
idf.py fullclean:清理构建目录,包括CMake配置和其它文件
idf.py flash:下载程序到ESP32
idf.py monitor:打开串口监视器
idf.py -p PORT erase_flash:擦除整个esp32的flash
idf.py reconfigure:重新运行CMake,用在源码树增加/删除文件或修改CMake cache时
可以一次使用多条命令,如:
idf.py -p COM4 clean flash monitor
示例项目
示例项目的结构如下:
- myProject/
- CMakeLists.txt
- sdkconfig
- components/ - component1/ - CMakeLists.txt
- Kconfig
- src1.c
- component2/ - CMakeLists.txt
- Kconfig
- src1.c
- include/ - component2.h
- main/ - src1.c
- src2.c
- build/
- 顶层CMakeList.txt设置全局的CMake变量,会导入/tools/cmake/project.cmake,此后的构建由它完成。
- sdkconfig:项目配置文件
- 组件:独立的模块,添加到CMake 变量 COMPONENT_DIRS中,可以在顶层 CMakeLists.txt 中设置 EXTRA_COMPONENT_DIRS 变量以查找其他指定位置处的组件,每个组件有一个CMakeList.txt文件,含有控制构建过程的变量。