Doesn’t look like i’m getting a break these days…
with another project:
#include "Adafruit_LiquidCrystal.h"
#include <Arduino.h>
<skip>
the error is “no such file” on LiquidCrystal.h
pio lib search -i Adafruit_LiquidCrystal.h
Found 1 libraries:
Adafruit LiquidCrystal
======================
#ID: 855
Fork of LiquidCrystal HD44780-compatible LCD driver library, now with support for ATtiny85
<skip>
[az@toshiba LCD]$ pio lib list
Library Storage: /home/az/Dropbox/work/Arduino/Sketches/Sockets/LCD/.piolibdeps
Adafruit GFX Library
====================
#ID: 13
<skip>
Adafruit LiquidCrystal
======================
#ID: 855
Fork of LiquidCrystal HD44780-compatible LCD driver library, now with support for ATtiny85.
<skip>
Adafruit ST7735 Library
=======================
#ID: 12
A library for the Adafruit 1.8" SPI display
<skip>
[az@toshiba LCD]$ cd .piolibdeps/
[az@toshiba .piolibdeps]$ ls
'Adafruit GFX Library_ID13' 'Adafruit LiquidCrystal_ID855' 'Adafruit ST7735 Library_ID12'
[az@toshiba .piolibdeps]$ ls -l Adafruit\ LiquidCrystal_ID855/
total 36
-rw-rw-r-- 1 az az 12133 Sep 4 2016 Adafruit_LiquidCrystal.cpp
-rw-rw-r-- 1 az az 3278 Sep 4 2016 Adafruit_LiquidCrystal.h
drwxrwxr-x 13 az az 4096 May 2 20:11 examples
-rw-rw-r-- 1 az az 840 Sep 4 2016 keywords.txt
-rw-rw-r-- 1 az az 381 Sep 4 2016 library.properties
-rw-rw-r-- 1 az az 2007 Sep 4 2016 README.md
drwxrwxr-x 2 az az 4096 May 2 20:11 utility
and :
[az@toshiba LCD]$ pwd
/home/az/Dropbox/work/Arduino/Sketches/Sockets/LCD
[az@toshiba LCD]$
[az@toshiba LCD]$ pio run -v
[Tue May 2 22:42:48 2017] Processing uno (platform: atmelavr; board: uno; framework: arduino)
---------------------------------------------------------------------------------------------------------------------------------
Collected 29 compatible libraries
Looking for dependencies...
Library Dependency Graph
|-- <Adafruit LiquidCrystal> v1.0.0 (/home/az/Dropbox/work/Arduino/Sketches/Sockets/LCD/.piolibdeps/Adafruit LiquidCrystal_ID855)
avr-g++ -o .pioenvs/uno/src/i2clcd.o -c -fno-exceptions -fno-threadsafe-statics -fpermissive -std=gnu++11 -g -Os -Wall -ffunction-sections -fdata-sections -flto -mmcu=atmega328p -DF_CPU=16000000L -DPLATFORMIO=30400 -DARDUINO_ARCH_AVR -DARDUINO_AVR_UNO -DARDUINO=10617 -I/home/az/.platformio/packages/framework-arduinoavr/cores/arduino -I/home/az/.platformio/packages/framework-arduinoavr/variants/standard "-I.piolibdeps/Adafruit LiquidCrystal_ID855" "-I.piolibdeps/Adafruit LiquidCrystal_ID855/utility" -Isrc src/i2clcd.cpp
avr-g++ -o ".pioenvs/uno/lib/Adafruit LiquidCrystal_ID855/utility/Adafruit_MCP23008.o" -c -fno-exceptions -fno-threadsafe-statics
-fpermissive -std=gnu++11 -g -Os -Wall -ffunction-sections -fdata-sections -flto -mmcu=atmega328p -DF_CPU=16000000L -DPLATFORMIO
=30400 -DARDUINO_ARCH_AVR -DARDUINO_AVR_UNO -DARDUINO=10617 -I/home/az/.platformio/packages/framework-arduinoavr/cores/arduino -I
/home/az/.platformio/packages/framework-arduinoavr/variants/standard "-I.piolibdeps/Adafruit LiquidCrystal_ID855" "-I.piolibdeps/
Adafruit LiquidCrystal_ID855/utility" ".piolibdeps/Adafruit LiquidCrystal_ID855/utility/Adafruit_MCP23008.cpp"
.piolibdeps/Adafruit LiquidCrystal_ID855/utility/Adafruit_MCP23008.cpp:19:18: fatal error: Wire.h: No such file or directory
#include <Wire.h>
^
compilation terminated.
*** [.pioenvs/uno/lib/Adafruit LiquidCrystal_ID855/utility/Adafruit_MCP23008.o] Error 1
=================================================== [ERROR] Took 1.90 seconds ===================================================
the examples all include an explicit call to “wire.h” (Adafruit LiquidCrystal_ID855/examples/Blink/Blink.pde).
Once i added Wire.h the code compiles, BUT:
1 . even though i stick #include Wire,h before all includes, after i hit a “save file” it (#include) moved to be last out of 3 includes:
#include <Wire.h>
#include <Adafruit_LiquidCrystal.h>
#include <Arduino.h>
to after “save”
#include <Adafruit_LiquidCrystal.h>
#include <Arduino.h>
#include <Wire.h>
The linter’s error is still there, but it compiles now:
find ~ -name Wire.h
/home/az/.platformio/packages/framework-arduinoavr/libraries/__cores__/panstamp/Wire/Wire.h
/home/az/.platformio/packages/framework-arduinoavr/libraries/Wire/src/Wire.h
[az@toshiba LCD]$ pio run -v
[Tue May 2 23:20:26 2017] Processing uno (platform: atmelavr; board: uno; framework: arduino)
---------------------------------------------------------------------------------------------------------------------------------
Collected 30 compatible libraries
Looking for dependencies...
Library Dependency Graph
|-- <Adafruit LiquidCrystal> v1.0.0 (/home/az/Dropbox/work/Arduino/Sketches/Sockets/LCD/.piolibdeps/Adafruit LiquidCrystal_ID855)
| |-- <Wire> v1.0 (/home/az/.platformio/packages/framework-arduinoavr/libraries/Wire)
|-- <Wire> v1.0 (/home/az/.platformio/packages/framework-arduinoavr/libraries/Wire)
avr-g++ -o .pioenvs/uno/src/i2clcd.o -c -fno-exceptions -fno-threadsafe-statics -fpermissive -std=gnu++11 -g -Os -Wall -ffunction
-sections -fdata-sections -flto -mmcu=atmega328p -DF_CPU=16000000L -DPLATFORMIO=30400 -DARDUINO_ARCH_AVR -DARDUINO_AVR_UNO -DARDU
INO=10617 -I/home/az/.platformio/packages/framework-arduinoavr/cores/arduino -I/home/az/.platformio/packages/framework-arduinoavr
<skip>
and the libs graph does make sense to me. But why did i have to manually include “wire.h” to my main program? the lib’s cpp file had it in “include”…
The apm :
Community Packages (15) /home/az/.atom/packages
├── atom-beautify@0.29.23
├── autocomplete-clang@0.11.3
├── build@0.67.0
├── busy@0.7.0
├── file-icons@2.1.4
├── git-control@0.9.0
├── intentions@1.1.2
├── language-ini@1.19.0
├── linter@2.1.4
├── linter-gcc@0.7.1
├── linter-ui-default@1.2.3
├── minimap@4.28.1
├── platformio-ide@2.0.0-beta.2
├── platformio-ide-terminal@2.5.0
└── tool-bar@1.1.0