Wenn Sie möchten, dass das Projekt in sich geschlossen ist, können Sie die Bibliotheksabhängigkeiten in den Skizzenordner einfügen. Die Ordnerstruktur der Foo-Skizze mit der Abhängigkeit der Protokollierungsbibliothek würde also ungefähr so aussehen:
Foo
|_Foo.ino
|_src
|_Logging
|_Logging.h
|_Logging.cpp
Und in Foo.ino werden Sie die Bibliothek wie folgt aufnehmen:
#include "src/Logging/Logging.h"
Leider verwenden einige Bibliotheken die falsche Include-Syntax, die immer noch funktioniert, wenn die Bibliothek in einem der Bibliotheksordner installiert ist, jedoch nicht, wenn sie sich im Skizzenordner befindet. Die Protokollierungsbibliothek verwendet zwar die richtige Include-Syntax, aber manchmal müssen Sie dies beheben, um Bibliotheken in den Skizzenordner zu legen. Angenommen, Sie haben eine Bibliothek mit dem Namen Bar und in Bar.cpp sehen Sie Folgendes:
#include <Bar.h>
Dies funktioniert nicht, da sich Bar.h bei Installation im Skizzenordner nicht in einem der Standard-Include-Pfade befindet. Sie müssen also Bar.cpp bearbeiten und die Include-Syntax in Folgendes ändern:
#include "Bar.h"
Dadurch wird der lokale Ordner nach der enthaltenen Datei durchsucht.
Der Nachteil dieses Systems besteht darin, dass Sie möglicherweise mehrere Kopien einer Bibliothek haben, sodass das Aktualisieren oder Ändern jeder Kopie aufwändiger ist. Dies kann natürlich auch von Vorteil sein, da jedes Projekt über eine eigene bekannte Version der Bibliothek verfügen kann, die nicht von Aktualisierungen betroffen ist, die Sie möglicherweise an derselben Bibliothek vornehmen, die in anderen Projekten verwendet wird.
Im Allgemeinen füge ich der Dokumentation für ein Projekt nur Anweisungen zum Installieren von Bibliotheksabhängigkeiten auf die übliche Weise hinzu. Dies sollte innerhalb der Möglichkeiten eines durchschnittlichen Arduino-Benutzers liegen. Wenn eine bestimmte Version einer Bibliothek erforderlich ist, dokumentieren Sie dies. Es gibt jedoch Fälle, in denen ich ein eigenständiges Projekt an jemanden übergeben wollte, der mit der Verwendung der Arduino-IDE nicht vertraut ist, und in dem ich das oben beschriebene System für alle erforderlichen Bibliotheken von Drittanbietern verwendet habe.