参考:ESP32 之 ESP-IDF 教学(十七)——组件依赖_priv_requires_Augtons正(单片机)的博客-CSDN博客
组件依赖关系的声明
依赖声明通过注册组件时传递REQUIRES或PRIV_REQUIRES实现依赖。
例如上文举的例子:组件B要依赖组件A。需要在注册B组件时声明对组件A的依赖
# Component B 的CMakeLists.txt
idf_component_register(
SRCS "源文件1.c" "源文件2.cpp" ...
INCLUDE_DIRS "头文件夹a" "头文件夹b" ...
REQUIRES "组件A" ...
)
注:REQUIRES和PRIV_REQUIRES区别
REQUIRES是声明public依赖,可供其他依赖者访问。
PRIV_REQUIRES是声明private依赖,只能被当前组件访问。
3、隐式依赖规则
为避免重复性工作,IDF构建系统会在某些特殊情况下自动依赖组件。
1. 规则一:通用依赖
各组件都会自动依赖一些“通用的”IDF组件,即使这些依赖关系没有被明确声明。这些组件的头文件会一直包含在构建系统中。
通用组件包括:
cxx、newlib、freertos、esp_hw_support、heap、log、lwip、soc、hal、esp_rom、esp_common、esp_system。
通用组件存放位置:E:\1zhc\ESP32\esp-idf--4.45\code\esp-idf\components
在源码存放路径的components 存放着 通用的组件
2. 规则二:main组件
main组件即主程序组件,它比较特别,会默认自动依赖所有其他组件。
所以不需要向main组件传递 REQUIRES 或 PRIV_REQUIRES参数。
idf_component_register(
SRCS "WiFiLedThread.c" "其他源文件1.c" "其他源文件2.cpp" ...
INCLUDE_DIRS "头文件夹a" "头文件夹b" ...
REQUIRES "LEDControl" "WiFiControl"
)
3.为组件添加多个个依赖组件