工程配置
项目创建
拷贝一个实例项目,修改一下项目名称
在根目录中 CMakeLists.txt
中修改项目名
cmake
project(<项目名>)
添加组件
在根目录中添加 components
目录,这个目录是固定名称的,因为工程会自动把这个目录下的所有目录配置为 espidf
的组件
在 components
目录下新建自定义组件的目录类似 my_comp
或其他名称,这个名称为组件名称
添加下面 3 个基础文件:
my_comp.h
my_comp.c
CMakeLists.txt
cmakefile(GLOB_RECURSE SOURCES ./*.c) idf_component_register(SRCS ${SOURCES} INCLUDE_DIRS . REQUIRES esp_driver_gpio tinyusb esp_tinyusb )
其中:
SRCS
表示项目源文件
${SOURCES}
表示引用上面的变量
INCLUDE_DIRS
表示包含文件的上层目录
.
表示当前目录
REQUIRES
表示引用的其他组件,这个有两个可以选择的引用方式:
TIP
REQUIRES
:
- 指定公共依赖项。
- 当一个组件 A 使用了
REQUIRES
来声明依赖组件 B 时,A 的所有依赖组件都会自动继承组件 B 的依赖项。 - 也就是说,A 依赖于 B,那么任何依赖于 A 的组件也会间接依赖于 B。这个机制使得依赖项可以自动传递。
- 适用于需要公开依赖的场景。
PRIV_REQUIRES
:
- 指定私有依赖项。
- 当一个组件 A 使用了
PRIV_REQUIRES
声明依赖组件 B 时,A 依赖于 B 但不会向其他组件公开这个依赖关系。 - 也就是说,A 可以使用 B 的功能,但依赖于 A 的其他组件不会自动继承 B 作为依赖项。
- 适用于不希望依赖项被传递的场景。
WARNING
如果工程有 can't find ...
类型的错误就要检查一下是否在这里正确引用了组件
添加自定义组件目录
如果不想添加 components
目录作为组件存放路径,或是想创建有特殊的含义的组件目录
在项目根目录中添加一个组件目录类似 hardware
, 然后在目录内添加组件 my_comp
,其他步骤都相同,但是最重要要在根目录 CMakeLists.txt
中修改
cmake
cmake_minimum_required(VERSION 3.16)
set(EXTRA_COMPONENT_DIRS
./hardware
)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(tusb_hid)