当使用ESP-IDF框架编写项目的时候,往往会在编译的时候碰见这种错误,网上找了很久解决问题的方法,大多数说是路径不对,需要包含进去。
../main/app_sd.c:15:10: fatal error: esp_vfs_fat.h: No such file or directory
#include "esp_vfs_fat.h"
^~~~~~~~~~~~~~~
compilation terminated.
[96/108] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/app_wifi.c.obj
查找esp_vfs_fot.h文件得知其在fatfs目录下vfs目录下,于是在项目的CMakeList.txt中设置如下
set(EXTRA_COMPONENT_DIRS
$ENV{IDF_PATH}/components/fatfs)
编译后依然报错。
进入到fatfs组件中,修改CMakeList.txt,修改component.mk,一通折腾,依然问题如故。
最终发现问题的根源在于,编译的时候此组件的include压根没有进入编译坏境里,那么需要想办法把这个组件添加进require里
最后在项目目录的main目录下发现一个CMakeList.txt文件,里面有个require
set(COMPONENT_REQUIRES
esp32-camera
esp-face
nvs_flash
esp_http_server
fb_gfx
mdns
wpa_supplicant
fatfs
)
于是添加fatfs,编译后终于不出错了。