Гаразд, ось як це працює, і я перевірив це, щоб переконатися.
Звичайно, ви можете використовувати важкі шляхи, але кожен програміст ненавидить використовувати жорсткі шляхи. Вони зовсім не портативні, і вони фіксують вашу програму на місці. Ви використовуєте м'які або жорсткі посилання на файли в проекті (шукайте довідкові сторінки на "ln"). Але, ... поговоримо про потворне! Тож питання в тому, як це зробити «правильно»? Ключовим моментом є вивчення, за якими параметрами та в який шлях працює компілятор C / C ++.
Ви побачите, що висновок НЕ є інтуїтивно зрозумілим. Різка в погоню: відносні шляхи НЕ працюють правильно. Тепер чому?
По-перше, дозвольте мені пояснити, чому хтось хотів би розмістити програмні файли поза каталогом проектів. Програмісти, як написання програмних занять, структур, методів, функцій, макросів тощо. Як тільки програміст затверджує фрагмент програми, він / вона хоче помістити файли у загальне дерево і рухатися далі. Кожна програма після цього могла використовувати цю приватну бібліотеку. Також, маючи файли в центральному місці, у вас не буде декількох копій та версій кожного. Одна приватна бібліотека для багатьох приватних програм.
Станом на 1.6.13 (Teensy ще не підтримує 1.8. *), Відносно включає старт із бібліотеки , а не вашого каталогу. Здається, що фільтр ano-to-C (пам’ятайте, що Arduino здійснює «перетворення» на ціль, а потім викликає компілятор C / C ++) починається там, де ви встановили дерево Arduino. У моєму випадку я встановив у "~ / bin / arduino". Будинок Teensy - це "./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 і також бути в курсі цих правил.