Как установить собственную библиотеку с помощью 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 -> Подключить библиотеку -> Управление библиотеками; ее нет в списке)
Я следую официальному руководству здесь. Есть идеи, как заставить компилятор распознать мою библиотеку?
@Escher, 👍2
1 ответ
Лучший ответ:
▲ 3
Вам необходимо:
- Создайте папку ~/Arduino/libraries/MyLibrary
- Поместите туда файлы библиотеки, назвав их так:
- ~/Arduino/libraries/MyLibrary/MyLibrary.h
- ~/Arduino/libraries/MyLibrary/MyLibrary.cpp
- Перезапустите IDE, если она запущена
- Используйте
#include <MyLibrary.h>
в своем эскизе
Предполагается, что ваш скетчбук настроен на ~/Arduino — измените его на то место, где настроен скетчбук (проверьте это местоположение в настройках).
Обратите внимание, что в Linux регистр важен. Файловая система чувствительна к регистру, и имя вашей папки должно иметь то же имя и регистр, что и имя вашего заголовочного файла.
,
@Majenko
Смотрите также:
- Wire.h не найден!
- Может ли плагин Arduino Eclipse использовать библиотеки, установленные Arduino IDE?
- ATtiny85 и DHT11 - Датчик всегда возвращает 0
- Arduino IDE: Плата nodemcuv2 (платформа esp8266, пакет esp8266) неизвестна
- Альтернативы дисплею Nextion
- TinyGPS++ Вопрос о gps.encode(ss.read())
- Как сгенерировать файлы .a и .so для добавления в проект arduino
- Только что установил Arduino 2.0.3 - каков путь Windows к связанным библиотекам?
Нет, но те же заглавные буквы, которые вы используете для файлов, следует использовать и для папки, а также в #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