В этой небольшой статье мы рассмотрим очень важную часть PlatformIO – менеджер библиотек. О том, почему он так важен и с чем его едят – читаем дальше!
Примечание: статья написана товарищем Shepelev K. и опубликована по его просьбе.
Как это и что это?
Грубо говоря, менеджер библиотек – это такая “программа”, которая позволяет вам без лишнего геморроя устанавливать библиотеки в проект. Вы всего лишь скармливаете ему название библиотеки или ссылку на github, а он за вас эту библиотеку скачивает и устанавливает туда, куда нужно.
Почему это круто?
Итак, why we should use it?
Как уже было упомянуто выше, все делается автоматически и вам ничего не надо делать вручную
Если какая-то из необходимых библиотек отсутствует, сборщик сам ее установит, а не выкинет ошибку и пошлет вас нах@й (мол, сам, Петя, устанавливай свои библиотеки, мне это дерьмо не надо)
Как только вы начнете пользоваться менеджером библиотек, вы сразу поймете всю соль – то, насколько это удобнее ручного шаманства, просто пленит вас и не отпустит.
Как начать этим пользоваться?
“Вот рассказал ты про то, какой этот менеджер библиотек, а как начать пользоваться то им?” – могут сказать самые нетерпеливые. Щас все будет. Собственно, все делается опять таки через файл platformio.ini, который является всем и вся нашего проекта.
Для начала создадим новый проект (либо откроем тестовый blink-проект, который мы создали в предыдущей статье). Рассмотрим работу менеджер библиотек на примере библиотеки Adafruit Neopixel, отвечающую за работу со светодиодами WS2812. Чтобы включить ее в наш проект, открываем файл platformio.ini. За зависимые библиотеки в PlatformIO отвечает флаг “lib_deps”. Дальше вы построчно перечисляете все библиотеки, которые вам необходимы в вашем проекте. В данном случае мы скармливаем ссылку на библиотеку Adafruit Neopixel на Github.
[env:nanoatmega328] platform = atmelavr board = nanoatmega328 framework = arduino upload_port = /dev/cu.wchusbserial1420 upload_speed = 57600 ; Подрубаем все библиотеки lib_deps = https://github.com/adafruit/Adafruit_NeoPixel
Теперь вы можете пользоваться этой библиотекой в вашем проекте 🙂 Преимущество перед хранением библиотек в отдельной папке заключается в том, что, во-первых, мы не тратим драгоценное время на скачивание и распаковку библиотек, во-вторых, если мы будем загружать данный проект на Github, у него не будет огромного размера, в-третьих, библиотеки автоматически обновляются, как только появляются их новые версии.
Репозиторий PlatformIO
У PlatformIO есть собственный репозиторий библиотек. Там можно и примерчики посмотреть на библиотеки, и, соответственно, добавить их в свой проект. Удобно, и, кстати, версию библиотеки можно задавать. Это чтобы у вас не возникло проблем при сборке проекта с новыми версиями библиотек, если их конкретно перелопатят.
Рассмотрим установку библиотеки из репозитория PlatformIO на примере FastLED. Сразу же нас встречают все примеры, справа можем увидеть поддерживаемые платформы. Удобно!
Но конкретно сейчас нас интересует вкладка Installation. Там мы уже может увидеть конкретные способы установки библиотеки в наш проект:
# Способы установки lib_deps = # С помощью ID 126 # С помощью имени библиотеки FastLED # Задать конкретную версию [email protected] # и более подробная настройка версий FastLED@^3.1.8 FastLED@~3.1.8 FastLED@>=3.1.8
Установка библиотек из архивов/папок
Допустим, вам надо добавить какие-то библиотеки, тупо прописав к ним путь. И это тоже можно сделать с помощью флага “lib_extra_dirs”:
# Подрубаем библиотеки из директорий lib_extra_dirs = /common/libraries, /iot/libraries
Вот мы и подобрались к завершению короткого введения в менеджер библиотек. Возникли вопросы? Пиши в комментариях, постараюсь помочь 🙂 В скором времени ждите небольшую статейку о убогом мониторе порта PlatformIO и о его альтернативе – AssHall, тайной разработке индийских программистов.
Автор: Shepelev K., 2k18