Issue with struct tm

Description

I have a problem when I try to get the local time using the standard ESP32 function getLocalTime. The following error appears:

error: aggregate ‘tm timeinfo’ has incomplete type and cannot be
defined

Steps To Reproduce Problem

The problem can be reproduced by writing the following code with the installed TimeAlarms library.

  struct tm timeinfo;
    if(!getLocalTime(&timeinfo)){
      Serial.println("Failed to obtain time");
      return;
    }

It seems like this problem is not present in Linux as far I can see.

Hardware & Software

Board: ESP32 DevKit V4
Arduino IDE version: Platformio, PLATFORM: Espressif 32 (1.12.4) > DOIT ESP32 DEVKIT V1
Operating system & version: Windows 10

lib_ignore = Time in the platformio.ini does not help?

@maxgerhardt I already tried that, it didn’t help because in that case I got the following error:

.pio\libdeps\esp32doit-devkit-v1\TimeAlarms/TimeAlarms.h:7:21: fatal error: TimeLib.h: No such file or directory

Okay then remove lib_ignore = Time again

this folder should have a Time.h file. Delete it. The Windows file system should then find the time.h of the compiler instead of the Time.h of that library.

Thank you, it works now. It would be nice if you (or some of developers) can make this library work without need for this kind of manual changes.

The main issue here is that the library Time was published once by PaulStoffregen (GitHub - PaulStoffregen/Time: Time library for Arduino) and it contains the Time.h library which makes so much problems on Windows which has a case-insensitive filesystem and if the compiler-builtin time.h standard library is supposed to be used too – And since some libraries built on that do a #include <Time.h> still instead of TimeLib.h it’s difficult to just release a library without the Time.h file.

For a more permanent and portable solution, please do the following:

  • Close VSCode
  • Copy the folder .pio\libdeps\esp32doit-devkit-v1\Time/ into lib/ (so that it becomes lib/Time/<files>)
  • Remove the Time.h file from inside lib/Time/
  • Remove the .pio\libdeps folder
  • Re-Open VSCode and rebuild

If all goes right it should now source the “Time” library from the lib/ folder which has the offending file removed and it should all still compile.

@maxgerhardt I will do that, thank you.