Если вы хотите, чтобы проект был автономным, вы можете поместить библиотечные зависимости в эскизную папку. Таким образом, структура папок эскиза Foo с зависимостью библиотеки журналов будет выглядеть примерно так:
Foo
|_Foo.ino
|_src
|_Logging
|_Logging.h
|_Logging.cpp
А в Foo.ino вы включите такую библиотеку:
#include "src/Logging/Logging.h"
К сожалению, некоторые библиотеки используют неверный синтаксис включения, который все еще работает, когда библиотека установлена в одной из папок библиотеки, но не находится в папке эскиза. Библиотека журналов использует правильный синтаксис включения, но иногда, чтобы поместить библиотеки в папку эскиза, вам необходимо это исправить. Например, допустим, у вас есть библиотека с именем Bar и в Bar.cpp вы видите это:
#include <Bar.h>
Это не сработает, потому что если он установлен в папке эскизов, Bar.h не будет находиться в одном из стандартных путей включения, поэтому вам нужно отредактировать Bar.cpp и изменить синтаксис включения на:
#include "Bar.h"
Что приведет к поиску локальной папки для поиска включенного файла.
Недостатком этой системы является то, что у вас может появиться несколько копий библиотеки, поэтому требуется больше усилий для обновления или изменения каждой копии. Конечно, это также может быть преимуществом, поскольку каждый проект может иметь свою собственную известную рабочую версию библиотеки, на которую не будут влиять какие-либо обновления, которые вы можете вносить в ту же библиотеку, которая используется в других проектах.
Обычно я просто добавляю инструкции о том, как установить библиотечные зависимости обычным способом, в документацию по проекту. Это должно быть в пределах возможностей среднего пользователя Arduino. Если нужна конкретная версия библиотеки, вы это документируете. Однако в некоторых случаях я хотел передать отдельный проект кому-то, кто не знаком с использованием IDE Arduino, и именно тогда я использовал описанную выше систему для всех необходимых сторонних библиотек.