Arduino Compiler Dependencies Caching

The Arduino IDE (and Visual Micro) use dependency files (*.d) generated during the build process, to work out if the sketch/core/libraries need to be re-compiled.

If these files are not generated as part of the build process, then no caching takes place, and the items are built every time, which can lead to a long build time if only minor changes have taken place.

 

How Are They Generated?

These are generated using the additional GCC option "-MMD".

They can be added to the extra_flags for testing, and then to the full c/cxx/cpp.flags options when integrating into platform.txt

(These can also be overridden in Visual Micro using the local board.txt file, and the extra_flags entries).

Examples

# Generate Dependencies using extra_flags (Only set ones present in your core)
compiler.c.extra_flags=-MMD
compiler.cxx.extra_flags=-MMD
compiler.cxx.extra_flags=-MMD

 

# Generate Dependencies using extra_flags (Example for MBED Sparkfun Core Below)
#compiler.c.flags=-iprefix{runtime.platform.path}/cores/ @{build.variant.path}/mbed/.c-flags 
-MMD {compiler.c.extra_flags}
#compiler.cxx.flags=-include {build.variant.path}/mbed/mbed_config.h -include {cores.path}/arduino/sdk/ArduinoSDK.h -iprefix{runtime.platform.path}/cores/ @{build.variant.path}/mbed/.cxx-flags -MMD {compiler.cxx.extra_flags}