[PlatformIO] How to build a library to share across projects?



  • A few weeks ago I switched from the Arduino IDE to PlatformIO. Since then developing of MySensors nodes becomes as convenient as it is developing Java or NodeJS applications. Then I tried to build a base library to share common functionality across my different projects. To archive this I've build a PlatformIO library project and added MySensors as dependency, since I want to add or wrap existing MySensors functionality. When I try to build one of my depending projects, LDF resolves the dependency tree as following:

    Library Dependency Graph
    |-- <BaseLibrary>
    |   |-- <MySensors> v2.1.0
    |   |   |-- <SPI> v1.0
    |   |   |-- <Wire> v1.0
    |   |   |-- <EEPROM> v1.0
    |-- <SPI> v1.0
    |-- <MySensors> v2.1.0
    |   |-- <SPI> v1.0
    |   |-- <Wire> v1.0
    |   |-- <EEPROM> v1.0
    |-- <EEPROM> v1.0
    |-- <ESP8266WiFi> v1.0
    

    But when I add #include <MySensors.h> to my BaseLibrary.cpp and build the depending project, the linker shows for each MySensors method the error ... multiple definition .... From my understandung the following precompiler statement

    #ifndef MySensors_h
    #define MySensors_h
    

    should avoid that this happens. Does anyone know how to build a multi project library with a MySensors dependency? Is this possible with the current MySensors design?


 

319
Online

7.8k
Users

8.7k
Topics

92.9k
Posts