У меня была такая же проблема (мне также нравится сохранять код автономным), поэтому я просто записываю некоторые заметки;скажем, у меня есть MyPdeSketch.pde
с использованием MyLibClass.cpp
;тогда я организовал это так:
/path/to/skdir/MyPdeSketch/MyPdeSketch.pde
/path/to/skdir/MyPdeSketch/MyLibClass/MyLibClass.cpp
/path/to/skdir/MyPdeSketch/MyLibClass/MyLibClass.h
(В принципе, /path/to/skdir/
здесь эквивалентно ~/sketchbook/
)
То, что сработало для меня, это что-то вроде:
mkdir /path/to/arduino-0022/libraries/MyLibClass
ln -s /path/to/skdir/MyPdeSketch/MyLibClass/MyLibClass.* /path/to/arduino-0022/libraries/MyLibClass/
После перезапуска IDE MyLibClass
должно отображаться в «Sketch / Import Library».
Обратите внимание, что единственный способ, которым я пока вижу, чтобы файл класса библиотеки ссылался на другие файлы библиотеки, - это включить их относительно (из «текущего местоположения»), предполагая, что они все находятся в одном и том же главном arduino-0022/libraries
папка (возможно связанный вопрос переполнения стека: Возможно ли включить библиотеку из другой библиотеки, используя Arduino IDE? ).
В противном случае также должна быть возможность создать символическую ссылку на каталог MyLibClass
непосредственно в arduino-0022/libraries
(вместо создания каталога вручную и последующей символической ссылки на файлы).По той же причине символическая ссылка на альтернативное местоположение ~/sketchbook/libraries
также может быть проблематичной.
Наконец, возможно, лучшей организацией может быть:
/path/to/skdir/MyLibClass/MyLibClass.cpp
/path/to/skdir/MyLibClass/MyLibClass.h
/path/to/skdir/MyLibClass/MyPdeSketch/MyPdeSketch.pde
... которая после символической ссылки на libraries
вынудит MyPdeSketch
показать в примерах для MyLibClass
библиотека в Arduino IDE (однако она может быть неприменима, если вы хотите автономно содержать несколько папок классов в одном каталоге).
РЕДАКТИРОВАТЬ: или просто использовать Makefile - которыйбудет работать напрямую с avr-gcc
, минуя Arduino IDE (в этом случае организация файла скетча может быть несколько ослаблена) ..