ESP-IDF 编译系统特殊需求&解决方案

文章目录

    • 修改 ESP-IDF 依赖的 Python 版本
    • 从 make 迁移到 cmake
    • 多个 ESP-IDF 版本共存
    • 兼容 ESP32-S2
    • 多源文件项目

修改 ESP-IDF 依赖的 Python 版本

Ubuntu 系统一般默认 Python2,新版 ESP-IDF (4.0+)默认Python3,官方建议进行默认修改,参考:Setting up the Python Interpreter

当然,也可以在使用时直接指定,例如

python3 idf.py build

从 make 迁移到 cmake

Migrating from ESP-IDF GNU Make System

使用迁移工具,可以实现:

  1. 自动将项目Makefile转为CMakeLists.txt
  2. 自动将组件component.mk转为
    CMakeLists.txt

如下:

$IDF_PATH/tools/cmake/convert_to_cmake.py /path/to/project_dir

转换后需要手动添加依赖(REQUIRESPRIV_REQUIRES)才能通过编译

多个 ESP-IDF 版本共存

IDF_PATH一般设置到系统环境中,也可通过项目顶级CMakeLists.txt中的project.cmake 推断。

后者的优点是,可以在项目中指定 ESP-IDF 路径。

cmake_minimum_required(VERSION 3.5)
include(${绝对路径}/tools/cmake/project.cmake)
project(myProject)

参考:编译过程,初始化阶段

兼容 ESP32-S2

  1. 使用sdkconfig.defaults.TARGET_NAME依据编译目标设置 sdkconfig 默认值:Target-dependent sdkconfig defaults
  2. Kconfig 中设置条件式默认值,参考:ESP-IDF Kconfig 编写备忘录

多源文件项目

如果源文件较多难以维护SRCS列表,可以使用SRC_DIRS结合EXCLUDE_SRCS的方法添加整个文件夹的源文件,缺点是文件夹新增源文件,编译系统不能自动添加,需要运行idf.py reconfigure触发cmake重新运行。

ESP-IDF自带组件使用了 Git 版本控制工具,对自身源文件进行管理。详见:File Globbing & Incremental Builds

你可能感兴趣的:(ESP系列物联网开发教程)