Project complies in Arduino IDE but not PlatformIO

Firstly, hi all! I’m glad to (finally) be posting my first question here…
Secondly, I apologize if this problem has been addressed before. I could not resolve it after about 2 hours of Googling so I gave up.

I am trying to build a sketch involving Mouse.h and Keyboard.h libraries in a Sparkfun Pro Micro. (Sketch can be downloaded here - https://grabcad.com/library/like-a-spacemouse-with-arduino-1 - included in the files)

A new project was created in PlatformIO home, choosing the Pro Micro board and Arduino framework, and I copied the code from .ino sketch into main.cpp.

When I build, I get a series of errors, starting with this:

In file included from src\SpaceMouseXY9_0.4.cpp:1:0:
C:\Users\hocbu.platformio\lib\Mouse_ID890\src/Mouse.h:29:2: warning: #warning “Using legacy HID core (non pluggable)” [-Wcpp]
#warning “Using legacy HID core (non pluggable)”
^
In file included from src\SpaceMouseXY9_0.4.cpp:2:0:
C:\Users\hocbu.platformio\lib\Keyboard_ID891\src/Keyboard.h:29:2: warning: #warning “Using legacy HID core (non pluggable)” [-Wcpp]
#warning “Using legacy HID core (non pluggable)”

Error log:

The Arduino IDE actually compiles the sketch without a problem, but I am still confused what I am doing wrong.

By the way, the platform.ini is

[env:sparkfun_promicro16]
platform = atmelavr
board = sparkfun_promicro16
framework = arduino
lib_deps =
Keyboard
Mouse

(Tested with and without the library dependency declaration)

Thanks!

I tried to build it and it worked for me with this platformio.ini file. I installed no other libraries:

[env:sparkfun_promicro16]
platform = atmelavr
board = sparkfun_promicro16
framework = arduino
lib_deps =
    Keyboard
    Mouse

Your paste above doesn’t show any white space before Keyboard and Mouse. I added a tab for each line. Could that be it?

If it helps, here’s the results of my build:

Processing sparkfun_promicro16 (platform: atmelavr; board: sparkfun_promicro16; framework: arduino)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/sparkfun_promicro16.html
PLATFORM: Atmel AVR 2.0.0 > SparkFun Pro Micro 5V/16MHz
HARDWARE: ATMEGA32U4 16MHz, 2.50KB RAM, 28KB Flash
PACKAGES:
 - framework-arduino-avr 5.0.0
 - toolchain-atmelavr 1.50400.190710 (5.4.0)
Converting SpaceMouseXY9_0.4.ino
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Looking for Keyboard library in registry
Found: https://platformio.org/lib/show/891/Keyboard
LibraryManager: Installing id=891
Using cache: /Users/dean/.platformio/.cache/4c/4626fc745065c3305b1d886ccec4d94c
Keyboard @ 1.0.2 has been successfully installed!
Looking for Mouse library in registry
Conflict: More than one library has been found by request {"name": "Mouse", "requirements": null}:
Mouse
=====
#ID: 890
Allows an Arduino/Genuino board with USB capabilites to act as a Mouse.
Automatically chose the first available library (use `--interactive` option to make a choice)

Keywords: device, control
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR, Atmel SAM, Espressif 32, Espressif 8266, Infineon XMC, Intel ARC32, Kendryte K210, Microchip PIC32, Nordic nRF51, Nordic nRF52, ST STM32, ST STM8, Teensy, TI MSP430
Authors: Arduino

Mouse
=====
#ID: 4676
Our PS2 converted into library

Keywords: mouse
Compatible frameworks: mbed
Compatible platforms: Atmel SAM, Freescale Kinetis, Maxim Integrated MAX32, Nordic nRF51, Nordic nRF52, NXP LPC, Silicon Labs EFM32, ST STM32, Teensy, WIZNet W7500
Authors: The Professional Perfectionists

Found: https://platformio.org/lib/show/890/Mouse
LibraryManager: Installing id=890
Using cache: /Users/dean/.platformio/.cache/18/a0e7f254d68852b9a2d2ea00e4737518
Mouse @ 1.0.1 has been successfully installed!
Found 7 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <Keyboard> 1.0.2
|   |-- <HID> 1.0
|-- <Mouse> 1.0.1
|   |-- <HID> 1.0
Building in release mode
Compiling .pio/build/sparkfun_promicro16/src/SpaceMouseXY9_0.4.ino.cpp.o
Compiling .pio/build/sparkfun_promicro16/libdc3/HID/HID.cpp.o
Compiling .pio/build/sparkfun_promicro16/lib874/Keyboard_ID891/Keyboard.cpp.o
Compiling .pio/build/sparkfun_promicro16/lib5b0/Mouse_ID890/Mouse.cpp.o
Archiving .pio/build/sparkfun_promicro16/libFrameworkArduinoVariant.a
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/CDC.cpp.o
Indexing .pio/build/sparkfun_promicro16/libFrameworkArduinoVariant.a
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/HardwareSerial.cpp.o
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/HardwareSerial0.cpp.o
Archiving .pio/build/sparkfun_promicro16/libdc3/libHID.a
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/HardwareSerial1.cpp.o
Indexing .pio/build/sparkfun_promicro16/libdc3/libHID.a
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/HardwareSerial2.cpp.o
Archiving .pio/build/sparkfun_promicro16/lib5b0/libMouse_ID890.a
Archiving .pio/build/sparkfun_promicro16/lib874/libKeyboard_ID891.a
Indexing .pio/build/sparkfun_promicro16/lib5b0/libMouse_ID890.a
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/HardwareSerial3.cpp.o
Indexing .pio/build/sparkfun_promicro16/lib874/libKeyboard_ID891.a
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/IPAddress.cpp.o
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/PluggableUSB.cpp.o
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/Print.cpp.o
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/Stream.cpp.o
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/Tone.cpp.o
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/USBCore.cpp.o
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/WInterrupts.c.o
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/WMath.cpp.o
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/WString.cpp.o
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/abi.cpp.o
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/hooks.c.o
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/main.cpp.o
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/new.cpp.o
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/wiring.c.o
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/wiring_analog.c.o
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/wiring_digital.c.o
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/wiring_pulse.S.o
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/wiring_pulse.c.o
Compiling .pio/build/sparkfun_promicro16/FrameworkArduino/wiring_shift.c.o
Archiving .pio/build/sparkfun_promicro16/libFrameworkArduino.a
Indexing .pio/build/sparkfun_promicro16/libFrameworkArduino.a
Linking .pio/build/sparkfun_promicro16/firmware.elf
Checking size .pio/build/sparkfun_promicro16/firmware.elf
Building .pio/build/sparkfun_promicro16/firmware.hex
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [=         ]   9.5% (used 243 bytes from 2560 bytes)
Flash: [==        ]  23.9% (used 6858 bytes from 28672 bytes)
=============================================================================================================================================== [SUCCESS] Took 1.45 seconds ===============================================================================================================================================

It looks like you left it as an .ino file, so PlatformIO would have done some of the Arduino pre-processing… as well as inserting the #include <Arduino.h> at the top… Regardless, when I just pasted the code as is into a main.cpp like the OP, it worked for me with that platformio.ini (I also added the indents as they are needed as you’ll get a parser error if they are missing, so it’s probably just a forum formatting issue as that’s a quote block, not a code block).

I see from @k2m5t2’s log that it’s using USBHost instead of HID… and 8 ‘compatiable libraries’ are being found instead of 7 like both you and I are getting. Maybe he installed that library globally? As if that’s the case, it will interact with all compiles, even ones where it’s not compatible. Either way, that library is probably the culprit.

Failing build:

Found 8 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <Keyboard> 1.0.2
|   |-- <USBHost> 1.0.5
|-- <Mouse> 1.0.1
|   |-- <USBHost> 1.0.5

Working builds:

Found 7 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <Keyboard> 1.0.2
|   |-- <HID> 1.0
|-- <Mouse> 1.0.1
|   |-- <HID> 1.0

Yes, seems like that was it! Thank you guys tremendously for the help.

1 Like