Librerie negli sketch

Vorrei sapere che differenza c'e' a scrivere

#include <wire.h>

al posto di #include "wire.h" ?

Inoltre in uno sketch ho <wire.h>,

e in wire.cpp vedo :

#include "utility/twi.h"

la twi.h e' presente nella directory dello sketch,ma compilandolo mi da

error : utility/twi.h : no such file or directory

Con la buildchain Arduino, se vuoi mettere le librerie all'interno della cartella dello sketch, devono trovarsi tutte nella sottocartella "src", ma a quel punto le devi includere con il percorso completo.

Esempio:


sketch_folder  
            |_ src
                  |_ libreria1
                              |_ lib1.h
                              |_ lib1.cpp

#include "src/libreria1/lib1.h"

Se vuoi una gestione più robusta delle versioni di libreria e core, io ti consiglio di passare a PlatformIO.

?

Non mi risulta, sei sicuro?:thinking:

Ciao, Ale.

Si, lo faccio molto spesso.

L'unico aspetto da considerare è che spesso è necessario mettere un po' le mani sulle librerie per sistemare gli include che devono essere relativi perché se usi < > l'IDE tenta di risolvere i percorsi sulle librerie "di sistema".

Mah..., io li schiaffo sempre dove sta anche il file .ino (la dir dello sketch) però uso le virgolette (#include "*.h") e ha sempre funzionato...

Ciao, Ale.

Si, ma se hai una libreria con una sua struttura già definita e non vuoi stravolgere tutto, mettendo in "src" non serve fare altro.

Io poi non amo scrivere dei firmware con tutti i file ammucchiati nella stessa cartella, mi piace tenere tutto separato, anche se alla fine funziona lo stesso.

Ho trovato anche il riferimento "ufficiale":

https://docs.arduino.cc/arduino-cli/sketch-specification

Però:
Le sottocartelle "src" vengono compilate in modo ricorsivo. A differenza dei file di codice nella cartella principale dello sketch, questi file non vengono visualizzati come schede negli IDE."