Hi all,
I’m a noob to PlatformIO. After installing PIO Core, I tried to migrate from Arduino IDE a minimal library project of mine (which works just fine in Arduino IDE) – this is its structure:
examples/MyExample/MyExample.ino
src/MyClass.h
src/MyClass.cpp
I configured this project adding platformio.ini
at its root:
[platformio]
default_envs = uno
[env]
framework = arduino
[env:uno]
platform = atmelavr
board = uno
When I execute pio run
, the linker grumbles about the lack of setup/loop functions:
Processing uno (platform: atmelavr; board: uno; framework: arduino)
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/uno.html
PLATFORM: Atmel AVR 2.2.0 > Arduino Uno
HARDWARE: ATMEGA328P 16MHz, 2KB RAM, 31.50KB Flash
DEBUG: Current (simavr) On-board (simavr)
PACKAGES:
- framework-arduino-avr 5.0.0
- toolchain-atmelavr 1.50400.190710 (5.4.0)
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 5 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Compiling .pio/build/uno/src/MyClass.cpp.o
Archiving .pio/build/uno/libFrameworkArduinoVariant.a
Indexing .pio/build/uno/libFrameworkArduinoVariant.a
Compiling .pio/build/uno/FrameworkArduino/CDC.cpp.o
. . .
Archiving .pio/build/uno/libFrameworkArduino.a
Indexing .pio/build/uno/libFrameworkArduino.a
Linking .pio/build/uno/firmware.elf
/tmp/ccM7EOrd.ltrans0.ltrans.o: In function `main':
<artificial>:(.text.startup+0x86): undefined reference to `setup'
<artificial>:(.text.startup+0x8e): undefined reference to `loop'
collect2: error: ld returned 1 exit status
*** [.pio/build/uno/firmware.elf] Error 1
To my understanding, the examples
subfolders should be automatically traversed for compilation by default (am I wrong?); I examined the documentation and skimmed this forum, but couldn’t find any appropriate clue for tweaking my configuration…
Trying to sort out my issue by analogy, I therefore looked for existing PlatformIO-enabled projects which had a structure similar to my own library (src+examples): https://github.com/jyberg/Enhanced-Nextion-Library.git seemed to fit my case, but when I executed pio run
on it, it FAILED the SAME WAY (??)
Processing uno (platform: atmelavr; board: uno; framework: arduino)
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/uno.html
PLATFORM: Atmel AVR 2.2.0 > Arduino Uno
HARDWARE: ATMEGA328P 16MHz, 2KB RAM, 31.50KB Flash
DEBUG: Current (simavr) On-board (simavr)
PACKAGES:
- framework-arduino-avr 5.0.0
- toolchain-atmelavr 1.50400.190710 (5.4.0)
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 6 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <SdFat> 1.1.4
| |-- <SPI> 1.0
|-- <SoftwareSerial> 1.0
Building in release mode
Compiling .pio/build/uno/src/NexButton.cpp.o
. . .
Compiling .pio/build/uno/lib632/SPI/SPI.cpp.o
. . .
Compiling .pio/build/uno/lib4c3/SdFat/FatLib/FatFile.cpp.o
. . .
Compiling .pio/build/uno/FrameworkArduino/CDC.cpp.o
. . .
Linking .pio/build/uno/firmware.elf
/tmp/ccd8nyUa.ltrans0.ltrans.o: In function `main':
<artificial>:(.text.startup+0x86): undefined reference to `setup'
<artificial>:(.text.startup+0x8a): undefined reference to `loop'
collect2: error: ld returned 1 exit status
*** [.pio/build/uno/firmware.elf] Error 1
Assuming that Enhanced-Nextion-Library is properly configured, what is the reason preventing my compilations?