Как установить собственную библиотеку с помощью Arduino IDE 1.8.5?

Я немного борюсь с языком Arduino + его IDE не на 100% настоящий C++. Я написал собственную библиотеку I2C для датчика, но не могу заставить компилятор IDE распознать ее. Я использую Ubuntu 18.04.

Я не получаю такой файл или каталог для всех этих вещей, которые я пробовал:

  • Включите файл .h по абсолютному и относительному пути в код .ino
  • Поместите файлы .cpp + .h в ~/Arduino/libraries
  • Поместите файлы .cpp + .h в ~/sketchbook/libraries
  • Поместите файлы .cpp + .h в ~/sketchbook/libraries/mylibrary
  • Поместите файлы .cpp + .h в ~/sketchbook/libraries/mylibrary и попробуйте «установить» библиотеку в IDE (Sketch -> Подключить библиотеку -> Управление библиотеками; ее нет в списке)

Я следую официальному руководству здесь. Есть идеи, как заставить компилятор распознать мою библиотеку?

, 👍2


1 ответ


Лучший ответ:

3

Вам необходимо:

  1. Создайте папку ~/Arduino/libraries/MyLibrary
  2. Поместите туда файлы библиотеки, назвав их так:
    • ~/Arduino/libraries/MyLibrary/MyLibrary.h
    • ~/Arduino/libraries/MyLibrary/MyLibrary.cpp
  3. Перезапустите IDE, если она запущена
  4. Используйте #include <MyLibrary.h> в своем эскизе

Предполагается, что ваш скетчбук настроен на ~/Arduino — измените его на то место, где настроен скетчбук (проверьте это местоположение в настройках).

Обратите внимание, что в Linux регистр важен. Файловая система чувствительна к регистру, и имя вашей папки должно иметь то же имя и регистр, что и имя вашего заголовочного файла.

,

Нет, но те же заглавные буквы, которые вы используете для файлов, следует использовать и для папки, а также в #include., @Majenko

Я не уверен, насколько это критично, но оно *должно* быть таким же, как и файл .h., @Majenko

Вы правы, это было местоположение скетчбука. Я несколько раз возился с установкой и не обновил настройки. Спасибо., @Escher

Вы подтвердили, где на самом деле находится папка вашего скетчбука? У меня это ~/Arduino (я обновил ответ, чтобы отразить это)., @Majenko

Я бы добавил, что исходные файлы могут находиться в подпапке src папки библиотеки, чтобы не смешивать их с файлами конфигурации библиотеки и файлом readme github, если вы хотите опубликовать библиотеку. ~/Arduino/libraries/MyLibrary/src/MyLibrary.h https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5:-Library-specification, @Juraj

Только если у вас есть library.properties (или что-то еще) для описания библиотеки..., @Majenko

*"Я не уверен, насколько это критично"* Когда несколько файлов соответствуют директиве #include, IDE использует соответствие имени папки как один из факторов для определения того, какой из них получает предпочтение. Это единственный случай, когда соответствие имени папки имеет значение., @per1234

@per1234 UECIDE более строг и нуждается в правильно названной папке, чтобы точно определить, что это за библиотека. Это необходимо, чтобы он мог правильно выполнить рекурсивное включение библиотек, чего, к сожалению, не хватает в Arduino IDE., @Majenko