Dette ser ut til å være et generelt problem med Arduino IDE: Den gjenkjenner bare biblioteker som er inkludert i (primær) .ino
-filen.
Hvis du ser på påkallelse av kompilatoren, blir stien til et gitt bibliotek bare lagt til hvis bibliotekets headerfil er inkludert i .ino
-filen.
Jeg testet dette med EEPROM-biblioteket. Hvis dette biblioteket er inkludert i .ino
-filen, kalles kompilatoren med
avr-g ++ -c -g -Os -Wall -fno-unntak -ffunction -seksjoner -fdata-seksjoner -mmcu = atmega328p -DF_CPU = 16000000L -DARDUINO = 100 -I / usr / share / arduino / hardware / arduino / cores / arduino -I / usr / share / arduino / hardware / arduino / variants / eightanaloginputs -I / usr / share / arduino / libraries / EEPROM /tmp/build2678545434708654378.tmp/test.cpp -o / tmp / build2678545434708654378.tmp / test.cpp.o
hvor viktig delen er -I/usr/share/arduino/libraries/EEPROM
.
Hvis jeg nå fjerner #include <EEPROM.h>
(men fortsatt har den i en annen topptekstfil som igjen er inkludert i .ino
som i ditt tilfelle), endres kompilatoranropet til
avr-g ++ -c -g - Os -Wall -fno-unntak -ffunction-seksjoner -fdata-seksjoner -mmcu = atmega328p -DF_CPU = 16000000L -DARDUINO = 100 -I / usr / share / arduino / hardware / arduino / cores / arduino -I / usr / share / arduino / hardware / arduino / variants / eightanaloginputs /tmp/build2678545434708654378.tmp/test.cpp -o / tmp / build2678545434708654378.tmp / test.cpp.o
hvor nå inkluderer stien til biblioteket mangler.
TL; DR
Hvis du trenger å bruke et bibliotek, er det bare (også) å legge til en inkludering i .ino
-filen. Det koster deg ingenting og vil løse problemet ditt;)
#include <file>
vs. #include "file"
Fra gcc-dokumentasjonen:
- #include <file> brukes til systemhodefiler. Den søker etter en fil med navnet fil i en standardliste med systemkataloger. [...]
- #include "file" brukes til headerfiler i ditt eget program. Den søker etter en fil med navnet filen først i katalogen som inneholder den nåværende filen, deretter i sitatkatalogene og deretter de samme katalogene som brukes til <file>. [...]