Si vous souhaitez que le projet soit autonome, vous pouvez placer les dépendances de bibliothèque dans le dossier d'esquisse. Ainsi, la structure de dossiers de l'esquisse Foo avec la dépendance de la bibliothèque de journalisation ressemblerait à ceci:
Foo
|_Foo.ino
|_src
|_Logging
|_Logging.h
|_Logging.cpp
Et dans Foo.ino, vous inclurez la bibliothèque comme ceci:
#include "src/Logging/Logging.h"
Malheureusement, certaines bibliothèques utilisent la syntaxe include incorrecte qui fonctionne toujours lorsque la bibliothèque est installée dans l'un des dossiers de bibliothèques mais pas lorsqu'elle se trouve dans le dossier d'esquisse. La bibliothèque de journalisation utilise la syntaxe d'inclusion correcte, mais parfois pour placer les bibliothèques dans le dossier d'esquisse, vous devrez résoudre ce problème. Par exemple, supposons que vous ayez une bibliothèque nommée Bar et dans Bar.cpp vous voyez ceci:
#include <Bar.h>
Cela ne fonctionnera pas car s'il est installé dans le dossier d'esquisse, Bar.h ne se trouvera pas dans l'un des chemins d'inclusion standard, vous devez donc modifier Bar.cpp et modifier la syntaxe d'inclusion en:
#include "Bar.h"
Ce qui entraînera la recherche dans le dossier local du fichier inclus.
L'inconvénient de ce système est que vous pouvez vous retrouver avec plusieurs copies d'une bibliothèque, il est donc plus difficile de mettre à jour ou de modifier chaque copie. Bien sûr, cela peut également être un avantage car chaque projet peut avoir sa propre version connue de la bibliothèque qui ne sera pas affectée par les mises à jour que vous pourriez apporter à la même bibliothèque utilisée dans d'autres projets.
J'ajoute généralement des instructions sur la façon d'installer les dépendances de bibliothèque de la manière habituelle dans la documentation d'un projet. Cela devrait être dans les capacités de l'utilisateur Arduino moyen. Si une version spécifique d'une bibliothèque est nécessaire, vous documentez cela. Cependant, il y a des cas où j'ai voulu remettre un projet autonome à quelqu'un qui n'est pas familier avec l'utilisation de l'IDE Arduino et c'est alors que j'ai utilisé le système décrit ci-dessus pour toutes les bibliothèques tierces nécessaires.