Compilation error in libraries

I wrote set of libraries for my Arduino project. The libraries are included via lib_extra_dirs property. I specify the path to the folder where I copied all folders with .h and .cpp files. Some libraries depend on each other.

When I build the project I got compilation errors in the library code. Basically, some header files from library A are not visible in library B despite the fact that all files are there.

I am not sure how can I show the code as there are a lot of files. I will post screenshots and build logs from CLion for now.

Here are build logs

[Tue Mar 27 12:53:24 2018] Processing nanoatmega328 (platform: atmelavr; lib_deps: Statistic, RadioHead; lib_extra_dirs: /Users/oleksandrabaukh/workspace/libs/MarkOS/; board: nanoatmega328; framework: arduino)

Verbose mode can be enabled via -v, --verbose option
Collected 32 compatible libraries
Scanning dependencies…
Library Dependency Graph ( Library Dependency Finder (LDF) — PlatformIO latest documentation )
|- Statistic v0.3.5
|- RadioHead v1.82
| |- SPI v1.0
|- communication
| |- commons
| |- MarkI
| | |- commons
| | |- cycle>
| | | |- <commons
|- controller
| |- MarkI
| | |- commons
| | |- cycle
| | | |- commons
| |-- cycle
| | |-- commons
| |- communication
| | |- commons
| | |- MarkI
| | | |- commons
| | | |- cycle
| | | | |- commons
|- SPI v1.0
Compiling .pioenvs/nanoatmega328/src/ArduinoController.o
Compiling .pioenvs/nanoatmega328/src/ControllerEnvironment.o
Compiling .pioenvs/nanoatmega328/src/Transceiver430.o
Compiling .pioenvs/nanoatmega328/src/main.o
Archiving .pioenvs/nanoatmega328/libFrameworkArduinoVariant.a
Compiling .pioenvs/nanoatmega328/FrameworkArduino/CDC.o
Indexing .pioenvs/nanoatmega328/libFrameworkArduinoVariant.a
Compiling .pioenvs/nanoatmega328/FrameworkArduino/HardwareSerial.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/HardwareSerial0.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/HardwareSerial1.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/HardwareSerial2.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/HardwareSerial3.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/IPAddress.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/PluggableUSB.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/Print.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/Stream.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/Tone.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/USBCore.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/WInterrupts.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/WMath.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/WString.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/_wiring_pulse.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/abi.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/hooks.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/main.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/new.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/wiring.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/wiring_analog.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/wiring_digital.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/wiring_pulse.o
Compiling .pioenvs/nanoatmega328/FrameworkArduino/wiring_shift.o
Compiling .pioenvs/nanoatmega328/libc9f/Statistic_ID1363/Statistic.o
Compiling .pioenvs/nanoatmega328/libc35/SPI/SPI.o
Archiving .pioenvs/nanoatmega328/libc9f/libStatistic_ID1363.a
Archiving .pioenvs/nanoatmega328/libFrameworkArduino.a
Indexing .pioenvs/nanoatmega328/libc9f/libStatistic_ID1363.a
Indexing .pioenvs/nanoatmega328/libFrameworkArduino.a
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RHCRC.o
Archiving .pioenvs/nanoatmega328/libc35/libSPI.a
Indexing .pioenvs/nanoatmega328/libc35/libSPI.a
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RHDatagram.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RHEncryptedDriver.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RHGenericDriver.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RHGenericSPI.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RHHardwareSPI.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RHMesh.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RHNRFSPIDriver.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RHReliableDatagram.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RHRouter.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RHSPIDriver.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RHSoftwareSPI.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RH_ASK.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RH_CC110.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RH_E32.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RH_MRF89.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RH_NRF24.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RH_NRF51.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RH_NRF905.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RH_RF22.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RH_RF24.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RH_RF69.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RH_RF95.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RH_Serial.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RH_TCP.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RHutil/HardwareSerial.o
Compiling .pioenvs/nanoatmega328/lib52e/RadioHead_ID124/RHutil/RasPi.o
Compiling .pioenvs/nanoatmega328/libcef/commons/memory/Pointer.o
Compiling .pioenvs/nanoatmega328/libcef/commons/some.o
Archiving .pioenvs/nanoatmega328/lib52e/libRadioHead_ID124.a
Compiling .pioenvs/nanoatmega328/libcef/commons/string/String.o
Indexing .pioenvs/nanoatmega328/lib52e/libRadioHead_ID124.a
Compiling .pioenvs/nanoatmega328/libb95/cycle/Cycle.o
Compiling .pioenvs/nanoatmega328/liba56/MarkI/controller/Controller.o
Archiving .pioenvs/nanoatmega328/libb95/libcycle.a
Compiling .pioenvs/nanoatmega328/liba56/MarkI/controller/RemoteController.o
Indexing .pioenvs/nanoatmega328/libb95/libcycle.a
In file included from /Users/oleksandrabaukh/workspace/libs/MarkOS/MarkI/controller/RemoteController.h:9:0,
from /Users/oleksandrabaukh/workspace/libs/MarkOS/MarkI/controller/RemoteController.cpp:5:
/Users/oleksandrabaukh/workspace/libs/MarkOS/controller/ControllerReceiver.h:9:22: fatal error: Receiver.h: No such file or directory


  • Looking for Receiver.h dependency? Check our library registry!
  • CLI > platformio lib search “header:Receiver.h”
  • Web > PlatformIO Registry

#include <Receiver.h>
^
compilation terminated.
*** [.pioenvs/nanoatmega328/liba56/MarkI/controller/RemoteController.o] Error 1
Compiling .pioenvs/nanoatmega328/liba56/MarkI/environment/Environment.o
In file included from /Users/oleksandrabaukh/workspace/libs/MarkOS/MarkI/environment/Environment.cpp:5:0:
/Users/oleksandrabaukh/workspace/libs/MarkOS/MarkI/environment/Environment.h:13:19: fatal error: Timer.h: No such file or directory


  • Looking for Timer.h dependency? Check our library registry!
  • CLI > platformio lib search “header:Timer.h”
  • Web > PlatformIO Registry

#include <Timer.h>
^
compilation terminated.
*** [.pioenvs/nanoatmega328/liba56/MarkI/environment/Environment.o] Error 1
========================== [ERROR] Took 8.13 seconds ==========================
make[3]: *** [CMakeFiles/PLATFORMIO_BUILD] Error 1
make[2]: *** [CMakeFiles/PLATFORMIO_BUILD.dir/all] Error 2
make[1]: *** [CMakeFiles/PLATFORMIO_BUILD.dir/rule] Error 2
make: *** [PLATFORMIO_BUILD] Error 2

CLion’s dependency view shows files that are considered as missing
CLion_dependency_view

I checked content of .pioenvs/nanoatmega328/ folder. I am not sure how it is populated but it doesn’t have all of my libraries.
image

It is interesting that MarkI library is not actually used in my project. It is just located in the common folder with other libraries.

Do I need to enforce the order of library compilation? What is the issue here?