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



我正试图在我的项目中添加一个外部库。

我的项目结构如下:

-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"

很明显,我的编译器没有将外部库中包含的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

相关内容

  • 没有找到相关文章

最新更新