ESPlane
  • Introduction
  • 语言/language
    • 中文
    • English
  • Operater Guide
    • 01 ESPlane Operater Get Started
    • 02 CFclient User Guid
    • 03 Calibration And Commissioning Methods
    • 04 Flight Mode Introduction
    • 05 Pid Tuning
    • 06 Multi-user Mode
    • 07 Load And Endurance Test
  • Developer Guide
    • 01 ESPlane Developer Get Started
    • 02 Code Architecture And Startup Process
    • 03 Sensor Angle Fusion
    • 04 Sensor Calibration
    • 05 Control System
    • 06 Gyro and Accelerometer MPU6050 Driver
    • 07 Laser Sensor Vl53l1x Driver
    • 08 Barometer MS5611 Driver
    • 09 Magnetic Compass HMC5883l Driver
    • 10 Brushed Motor Driver
    • 11 Optical Flow Sensor Pmw3901 Driver
    • 12 Variable Unified Management
    • 13 Crtp Protocol Introduction
    • 14 Crtp Protocol Library - Cflib
    • 15 Compatible With ESPilot APP
    • 16 Height-hold Mode Development
    • 17 Positon-hold Mode Development
  • Research on Crazyflie
    • 01 Crazyflie Project Preview
    • 02 Crazyflie Source Preview
    • 03 Crazyflie Code Modularization Method
    • Discussion On Private-Improvement Scheme
    • Private-1.0 Code Debug Record
    • Private-Research On Commercial Micro Drone Products
    • Well-Known Drone Open Source Solutions
  • ESP32 Development notes
    • ESP32 Chip Naming Rules
    • ESP32 Pin Resource Allocation And Usage Recommendations
    • 01 ESP32-Hardware Preparation-ESP32-DevKitC V2 board
    • 02 ESP32-Environment Setup-Compilation And Programming
    • 03 ESP-IDF-Directory Structure-Template Engineering Analysis Notes
    • 04 ESP32-Code Debugging-Summary Of Several Debugging Methods
    • 05 ESP32 Event Loop
    • 14 ESP32 SPI Use Memo
    • 15 ESP32 GPIO Use Memo
  • Reference
    • bitcraze.io
    • esp-idf-release-v3.3
由 GitBook 提供支持
在本页
  • 一、官方示例
  • 二、项目目录结构
  • 三、学习笔记
  • 1. 默认构建行为
  • 2. 组件默认搜索顺序

这有帮助吗?

  1. ESP32 Development notes

03 ESP-IDF-Directory Structure-Template Engineering Analysis Notes

上一页02 ESP32-Environment Setup-Compilation And Programming下一页04 ESP32-Code Debugging-Summary Of Several Debugging Methods

最后更新于5年前

这有帮助吗?

一、官方示例

使用ESP-IDF构建工程,需要遵循一定的规则,否则可能出现编写错误.乐鑫开源了大量的示例工程或者解决方案,可以直接复制修改:

  • 快速上手:esp-jumpstart

  • esp-idf:附带example

  • 空模板工程:esp-idf-template

  • iot解决方案:esp-iot-solution

二、项目目录结构

示例项目目录树
  • Makefile应该放在项目根目录,该文件所在目录会被编译系统自动保存为==PROJECT_NAME==

  • sdkconfig由make menuconfig自动生成,同级目录还会自动生成sdkconfig.old、sdkconfig.defaults,用于恢复上一次设置或默认设置

  • components目录下可以不设置,构建系统会从IDF_PATH目录调用component源代码,如果将要使用到的component复制到项目目录.构建系统会使用当前目录下component,不影响IDF_PATH内源代码.

  • component1,component2为组件目录,里面包含组件源代码(官方封装库),其中==Kconfig==用于声明menuconfig的选项,通过界面交互修改组件的宏定义.==component.mk==用于配置组件的各种行为,具体可以参考:预设的组件变量

  • main目录放置工程主要源文件,该目录被官方定义为“伪组件”,和组件目录遵循相同的编译规则.

三、学习笔记

1. 默认构建行为

main目录和component目录都需要包含component.mk文件,哪怕是空的.如果文件为空,则组件的默认构建行为会被设置为:

  • 当前目录的所有.c .cpp *.cc文件将参与编译

  • 当前目录子目录“include”下的所有头文件,会被添加到全局搜索路径

官方解读

2. 组件默认搜索顺序

与其他编译器不同,这里将使用最后搜索到的路径,如果工程内存在同名component,将覆盖ESP-IDF的源代码.

components默认搜索顺序:
$(IDF_PATH)/components
$(PROJECT_PATH)/components
$(PROJECT_PATH)/main
EXTRA_COMPONENT_DIRS