Including Libraries in the Arduino IDE

Including Libraries in the Arduino IDE

There’s an annoying subtlety in the Arduino IDE when using tabs (multiple files in the sketch), that was kindly explained by PaulS on the Arduino forums.

Any Arduino libraries that are needed by the files outside of the sketch (.ino) file must also be listed in the sketch file itself.

Example

You cannot simply do this:

[cpp light=”true”]example.h:

#include <Servo.h>[/cpp]

When you attempt to compile, you’ll get an error like,

In file included from test_junk_02.cpp:1:
test.h:7: error: 'Servo' does not name a type

You must also include the library in the sketch:

[cpp light=”true”]test.ino:

#include <Servo.h>
#incude "example.h"[/cpp]

Explanation

The explanation that PaulS gave was the following:

The sketch is parsed for include files. The sketch, all included header files, and the corresponding source files, are copied to another directory for compiling. From that directory, library-based include files are NOT available unless they are included in the sketch and copied to the build directory.

Comments

  • Derek Adams | Sep 24,2013

    Thanks for the post! You just fixed a problem that caused me hours of headaches.

  • Mishel Johns | Feb 27,2014

    Same here. Thank you!

  • Leave a Reply

    %d bloggers like this: