Can't find lib-deps header file when using Arduino as a component

Hi, I’m using PlatformIO on Linux Mint with Arduino as a component and my project has an external arduino-esp32 dependency in lib_deps, on compile the library is installed in pio./libdeps but the compiler can’t find it;

Processing esp32dev (platform: espressif32; board: esp32dev; framework: espidf)
----------------------------------------------------------------------------------------------------------------------------------------------
Library Manager: Installing me-no-dev/ESP Async WebServer @ ^1.2.3
Unpacking  [####################################]  100%
Library Manager: ESP Async WebServer@1.2.3 has been installed!
Library Manager: Resolving dependencies...
Library Manager: Installing AsyncTCP
Library Manager: Warning! More than one package has been found by AsyncTCP requirements:
Library Manager:  - me-no-dev/AsyncTCP@1.1.1
Library Manager:  - kubafilinger/AsyncTCP@1.1.1
Library Manager:  - zeed/AsyncTCP@1.1.1
Library Manager: Please specify detailed REQUIREMENTS using package owner and version (shown above) to avoid name conflicts
Unpacking  [####################################]  100%
Library Manager: AsyncTCP@1.1.1 has been installed!
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html
PLATFORM: Espressif 32 (5.1.0) > Espressif ESP32 Dev Module
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES: 
 - framework-arduinoespressif32 @ 2.0.4+sha.c93bf11 
 - framework-espidf @ 3.40401.0 (4.4.1) 
 - tool-cmake @ 3.16.4 
 - tool-esptoolpy @ 1.30300.0 (3.3.0) 
 - tool-ninja @ 1.7.1 
 - toolchain-esp32ulp @ 1.22851.191205 (2.28.51) 
 - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch3
Reading CMake configuration...
Generating assembly for certificate bundle...
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain+, Compatibility ~ soft
Found 0 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Compiling .pio/build/esp32dev/src/main.o
Generating LD script .pio/build/esp32dev/memory.ld
Compiling .pio/build/esp32dev/app_trace/app_trace.o
Compiling .pio/build/esp32dev/app_trace/app_trace_util.o
Compiling .pio/build/esp32dev/app_trace/host_file_io.o
src/main.cpp:2:10: fatal error: ESPAsyncWebServer.h: No such file or directory

***************************************************************************
* Looking for ESPAsyncWebServer.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:ESPAsyncWebServer.h"
* Web  > https://registry.platformio.org/search?q=header:ESPAsyncWebServer.h
*
***************************************************************************

 #include "ESPAsyncWebServer.h"
          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
Compiling .pio/build/esp32dev/app_trace/gcov/gcov_rtio.o
*** [.pio/build/esp32dev/src/main.o] Error 1

my platform.ini file;

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = espidf
platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#2.0.4

; set cpu frequency - 80, 160 or 240MHz
board_build.f_cpu = 240000000L 

; Serial Monitor options
monitor_speed = 115200

upload_port = /dev/tty*
upload_speed = 115200

board_build.flash_mode = dio

lib_ldf_mode = chain+

build_flags = 
    -D ESP32

lib_deps = 
    me-no-dev/ESP Async WebServer@^1.2.3 
    me-no-dev/AsyncTCP@1.1.1
 

and main.cpp

#include "Arduino.h"
#include "ESPAsyncWebServer.h"

extern "C" void app_main()
{
  initArduino();

  Serial.begin(115200);
  while(!Serial){
    ; // wait for serial port to connect
  }

  while(true){
    Serial.println("loop");
  }

}

This is not how you usually do an ESP-IDF + Arduino-ESP32 build, you set

framework = arduino, espidf

as seen in the official example.

With arduino in the used frameworks, the library should be passing PlatformIO’s library-dependency-finder compatibility check. You can also manually disable it.

1 Like

Thanks a lot, it compiled successfully with;

platform = espressif32@5.2.0
board = esp32dev
framework = arduino, espidf
platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#2.0.5