如何将 ESP-IDF 库添加到外部库

How to add an ESP-IDF library to an external library

我正在尝试将外部库添加到我的项目中。

我的项目结构如下所示:

-project
   -- main
     --- main.c
     --- displayfunctions.c (where i implement my Displayfunctions based on the library)
     --- 2 other .c files which got nothing to do with my Display
     --- CMakeLists.txt 
   -- components
     --- displaylibrary
       ---- CMAKELists.txt
       ---- all displayrelevant librarys pngle.c fontx.c etc..
       ---- include
          ----- all corresponding header files pngle.h fontx.h etc.

我在 project/components/displaylibrarys 中的 CMakeLists.txt 文件如下所示:

idf_component_register(SRCS "pngle.c" "decode_jpeg.c" "decode_png.c" "fontx.c" "ili9340.c"
                       INCLUDE_DIRS "include" )


include($ENV{IDF_PATH}/tools/cmake/project.cmake)

当我尝试编译我的项目时,我收到以下错误消息:

../components/Displaylibrarys/fontx.c:7:10: fatal error: esp_spiffs.h: No such file or directory #include "esp_spiffs.h"

所以显然我的编译器没有 link 我的外部库中包含 esp-idf 库和实际的 esp-idf 库。我也尝试过这种方法

idf_component_register(SRCS "pngle.c" "decode_jpeg.c" "decode_png.c" "fontx.c" "ili9340.c"
                       INCLUDE_DIRS "include"
                       REQUIRES esp_spiffs)

但没有结果。我应该如何正确地告诉我的编译器它知道这个库?

ESP-IDF 构建系统适用于组件。您的库是一个组件,ESP-IDF 库的许多部分也是。

作为组件方法的一部分,您的组件需要声明它所依赖的其他组件。这就是 REQUIRES 子句的用途。

除了组件被称为 spiffs 而不是 esp_spiffs

之外,您几乎做对了
idf_component_register(SRCS "pngle.c" "decode_jpeg.c" "decode_png.c" "fontx.c" "ili9340.c"
                       INCLUDE_DIRS "include"
                       REQUIRES spiffs)

我通常检查 ESP-IDF 组件目录以找出正确的名称。组件和目录名称相同:https://github.com/espressif/esp-idf/tree/master/components