Skip to content

工程配置

项目创建

拷贝一个实例项目,修改一下项目名称

在根目录中 CMakeLists.txt 中修改项目名

cmake
project(<项目名>)

添加组件

在根目录中添加 components 目录,这个目录是固定名称的,因为工程会自动把这个目录下的所有目录配置为 espidf 的组件

components 目录下新建自定义组件的目录类似 my_comp 或其他名称,这个名称为组件名称

添加下面 3 个基础文件:

  1. my_comp.h

  2. my_comp.c

  3. CMakeLists.txt

    cmake
    file(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)

Released under the GPL License.