I want to make platformIO folder from an existing example of a library (in our case IotWebConf library). So I check out the source code, and start to create a folder from the root of this library with name ‘pio_examples/IotWebConf06MqttApp’, and start building up PIO from there as follows.
I create a directory structure like this (Only the platformio.ini is new here everything else is just symlink to it’s original location.):
./lib
./lib/IotWebConf -> ../../../
./platformio.ini
./src
./src/main.cpp -> ../../../examples/IotWebConf06MqttApp/IotWebConf06MqttApp.ino
platformio.ini is this:
[env:d1]
platform = espressif8266
board = d1
framework = arduino
monitor_speed = 115200
lib_deps =
MQTT
IotWebConf
Compiler output:
> Executing task in folder IotWebConf06MqttApp: pio run --environment d1 <
Processing d1 (platform: espressif8266; board: d1; framework: arduino)
---------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/d1.html
PLATFORM: Espressif 8266 2.6.2 > WEMOS D1 R1
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
PACKAGES: toolchain-xtensa 2.40802.200502 (4.8.2), framework-arduinoespressif8266 3.20704.0 (2.7.4), tool-esptool 1.413.0 (4.13), tool-esptoolpy 1.20800.0 (2.8.0)
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Looking for MQTT library in registry
Conflict: More than one library has been found by request {"name": "MQTT", "requirements": null}:
<...>
Found: https://platformio.org/lib/show/617/MQTT
LibraryManager: Installing id=617
Using cache: /Volumes/Data/ext/kelemenb/.platformio/.cache/d9/23fa68fd8ed789f7f0efa8a2de96c3d9
MQTT @ 2.4.8 has been successfully installed!
Found 31 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <IotWebConf> 2.3.2
| |-- <DNSServer> 1.1.1
| | |-- <ESP8266WiFi> 1.0
| |-- <ESP8266WebServer> 1.0
| | |-- <ESP8266WiFi> 1.0
| |-- <ESP8266WiFi> 1.0
| |-- <EEPROM> 1.0
| |-- <ESP8266mDNS> 1.2
| | |-- <ESP8266WiFi> 1.0
Building in release mode
Compiling .pio/build/d1/src/main.cpp.o
Generating LD script .pio/build/d1/ld/local.eagle.app.v6.common.ld
src/main.cpp:39:18: fatal error: MQTT.h: No such file or directory
**************************************************************
* Looking for MQTT.h dependency? Check our library registry!
*
* CLI > platformio lib search "header:MQTT.h"
* Web > https://platformio.org/lib/search?query=header:MQTT.h
*
**************************************************************
#include <MQTT.h>
^
compilation terminated.
Compiling .pio/build/d1/liba63/ESP8266WiFi/BearSSLHelpers.cpp.o
Compiling .pio/build/d1/liba63/ESP8266WiFi/CertStoreBearSSL.cpp.o
Compiling .pio/build/d1/liba63/ESP8266WiFi/ESP8266WiFi.cpp.o
Compiling .pio/build/d1/liba63/ESP8266WiFi/ESP8266WiFiAP.cpp.o
Compiling .pio/build/d1/liba63/ESP8266WiFi/ESP8266WiFiGeneric.cpp.o
Compiling .pio/build/d1/liba63/ESP8266WiFi/ESP8266WiFiGratuitous.cpp.o
*** [.pio/build/d1/src/main.cpp.o] Error 1
============================================================== [FAILED] Took 5.63 seconds ==============================================================
Environment Status Duration
------------- -------- ------------
d1 FAILED 00:00:05.629
========================================================= 1 failed, 0 succeeded in 00:00:05.629 =========================================================
The terminal process "pio 'run', '--environment', 'd1'" terminated with exit code: 1.
Terminal will be reused by tasks, press any key to close it.
I see, that ‘.pio/libdeps/d1/MQTT’ is created by the build, and contains all the source code of this lib:
./.pio/libdeps
./.pio/libdeps/d1
./.pio/libdeps/d1/MQTT
./.pio/libdeps/d1/MQTT/.editorconfig
./.pio/libdeps/d1/MQTT/.gitignore
./.pio/libdeps/d1/MQTT/.travis.yml
./.pio/libdeps/d1/MQTT/CMakeLists.txt
./.pio/libdeps/d1/MQTT/LICENSE.md
./.pio/libdeps/d1/MQTT/Makefile
./.pio/libdeps/d1/MQTT/README.md
…
./.pio/libdeps/d1/MQTT/library.properties
./.pio/libdeps/d1/MQTT/src
./.pio/libdeps/d1/MQTT/src/MQTT.h
./.pio/libdeps/d1/MQTT/src/MQTTClient.cpp
./.pio/libdeps/d1/MQTT/src/MQTTClient.h
./.pio/libdeps/d1/MQTT/src/lwmqtt
./.pio/libdeps/d1/MQTT/src/lwmqtt/client.c
./.pio/libdeps/d1/MQTT/src/lwmqtt/helpers.c
./.pio/libdeps/d1/MQTT/src/lwmqtt/helpers.h
./.pio/libdeps/d1/MQTT/src/lwmqtt/lwmqtt.h
./.pio/libdeps/d1/MQTT/src/lwmqtt/packet.c
./.pio/libdeps/d1/MQTT/src/lwmqtt/packet.h
./.pio/libdeps/d1/MQTT/src/lwmqtt/string.c
Now I modify platformio.ini as follows, and the build will finish successfully this time:
[env:d1]
platform = espressif8266
board = d1
framework = arduino
monitor_speed = 115200
lib_extra_dirs =
.pio/libdeps/d1/
lib_deps =
MQTT
IotWebConf