Я новичок в разработке Arduino / C (из среды JavaScript / Ruby), но мне было интересно, можно ли включить библиотеку из пользовательской папки в эскиз?
Так что это моя ситуация;
project.ino
libs/
MyNewLib/
MyNewLib.h
MyNewLib.ccp
Теперь мой вопрос: как я могу включить мою собственную библиотеку? Я пробовал несколько вариантов этого;
# project.ino
#include <libs/MyNewLib/MyNewLib.h>
#include "libs/MyNewLib/MyNewLib.h"
#include <./libs/MyNewLib/MyNewLib.h>
#include "./libs/MyNewLib/MyNewLib.h"
Но ни один из них не работает. Кто-нибудь может сказать мне, если это возможно? Я изучил этот вопрос в Интернете, но не могу найти удовлетворительного ответа. Надеюсь, вы, ребята, можете помочь.
Приветствия.
ОБНОВИТЬ
Я знаю, что вы можете поместить свои библиотеки в папку глобальных библиотек, но я хочу, чтобы они были в моей локальной папке проекта. Я хочу поделиться ими через git с моей командой.
library
sketch
system-design
Стефан
источник
источник
include
указав путь / к / library /, который, как я полагаю, вы спрашиваете.Ответы:
Хорошо, вот как это работает, и я проверил это, чтобы убедиться.
Конечно, вы можете использовать сложные пути, но каждый программист ненавидит использовать сложные пути. Они вообще не переносимы и блокируют вашу программу на месте. Вы используете мягкие или жесткие ссылки на файлы в проекте (посмотрите справочные страницы на «ln»). Но, ... говорить о некрасивом! Так что вопрос в том, как это сделать «правильно»? Ключ в том, чтобы узнать, с какими параметрами и по какому пути работает компилятор C / C ++.
Вы обнаружите, что заключение НЕ является интуитивно понятным. Резка в погоне: относительные пути не работают правильно. Теперь почему?
Но сначала позвольте мне объяснить, почему кто-то захочет разместить программные файлы за пределами каталога проекта. Программистам нравится писать программные классы, структуры, методы, функции, макросы и т. Д. Один раз. Как только программист затвердевает фрагмент программы, он / она хочет поместить файлы в общее дерево и двигаться дальше. После этого каждая программа может использовать эту частную библиотеку. Кроме того, благодаря центральному расположению файлов у вас не будет нескольких копий и версий каждого. Одна частная библиотека для многих частных программ.
Начиная с версии 1.6.13 (Teensy еще не поддерживает 1.8. *), Относительная включает начало из библиотеки , а не из вашего каталога. Похоже, что фильтр ano-to-C (помните, что Arduino выполняет «преобразование» в цель, а затем вызывает компилятор C / C ++) запускается там, где вы установили дерево Arduino. В моем случае я установил в "~ / bin / arduino". Дом Тинси "./hardware/teensy". Полный домашний путь к библиотекам - «~ / bin / arduino / hardware / teensy / avr / library», где вы найдете все деревья программ поддержки.
В исходном файле оператор '#include "test.hpp" правильно выбирает файл из вашего текущего каталога. ОДНАКО, если вы используете '#include "../test.hpp", путь включения не начинается в каталоге вашего проекта. Вместо этого он начинается в "./libraries"! Таким образом, получающийся путь:
#include "../test.hpp" ==> ./arduino/hardware/teensy/avr/libraries/test.hpp
В заключение, нет никакого чистого способа сделать свое собственное дерево инструментов в соседнем каталоге. Единственный курс - это зафиксировать свою работу в библиотеке Arduino и знать эти правила.
источник
Я только что вернулся к использованию Arduino через некоторое время и несколько озадачен схожими проблемами и смущен разной информацией с разных сайтов и разных версий ide.
Что я обнаружил, так это то, что если у вас есть эскиз в каталоге, то закройте Ide, вы можете удалить файлы .h, .cpp ... в каталог, и ide при перезапуске откроет их вместе со эскизом.
Включите их, используя простые кавычки в именах файлов, без пути, без угловых скобок.
Я уверен, что это только часть полного ответа, но это заставило меня начать.
источник
Насколько я знаю, вы можете включать свои библиотеки из пользовательского местоположения, используя их абсолютный путь.
Поскольку абсолютные пути могут быть скучными с точки зрения переносимости кода, вы можете определить некоторые макросы, чтобы получить абсолютный путь от заданного относительного. Таким образом, вам просто нужно будет исправить путь «root проекта» при переходе с одного устройства на другое.
Определите корневую папку вашего проекта:
Определите относительный к абсолютному макрос «преобразование»:
Включите ваши файлы, используя относительный путь:
Надеюсь это будет полезно.
источник
Плагин Arduino для Visual Studio поддерживает локальные библиотеки, плагин можно найти здесь
источник
Я недавно проверил эту структуру локальной библиотеки. Работает с:
Предварительная обработка сборки Arduino IDE 1.6.7 даже подберет исходный код библиотеки.
Ура!
источник
Я нашел самый простой способ сделать это - сохранить библиотеки в локальном каталоге эскизов и создать символическую ссылку в каталоге [HOME] / Arduino / library. Затем вы можете легко зарегистрировать их в Git с вашим эскизом / проектом, и Arduino все еще счастлив, потому что библиотеки доступны в глобальной папке.
Возможно, даже создайте скрипт установки, который автоматически создаст эти ссылки, и проверьте это в Git.
источник
Еще одно действительно плохое исправление - создайте файл с именем
libraries.cpp
, который содержит:Конечно, это работает, только если библиотека сама по себе не содержит никаких включений ...
источник