D'accord, voici comment cela fonctionne, et je l'ai vérifié pour m'en assurer.
Bien sûr, vous pouvez utiliser des chemins d'accès durs, mais chaque programmeur déteste utiliser des chemins d'accès durs. Ils ne sont pas portables du tout et verrouillent votre programme en place. Vous utilisez des liens mous ou durs vers les fichiers du projet (recherchez les pages de manuel sur "ln"). Mais ... parle de laid! La question est donc de savoir comment le faire "correctement"? La clé est d'apprendre avec quels paramètres et dans quel chemin le compilateur C / C ++ s'exécute.
Vous constaterez que la conclusion n'est PAS du tout intuitive. Aller droit au but: les chemins relatifs ne fonctionnent pas correctement. Maintenant pourquoi?
Mais d'abord, permettez-moi d'expliquer pourquoi quelqu'un voudrait placer des fichiers programme en dehors du répertoire du projet. Les programmeurs aiment écrire des classes de programme, des structures, des méthodes, des fonctions, des macros, etc., une fois. Dès que le programmeur solidifie le fragment de programme, il / elle veut mettre les fichiers dans une arborescence commune et continuer. Par la suite, chaque programme pourrait utiliser cette bibliothèque privée. De plus, en ayant les fichiers dans un emplacement central, vous n'aurez pas plusieurs copies et versions de chacun. Une bibliothèque privée pour de nombreux programmes privés.
Depuis la version 1.6.13 (Teensy ne prend pas encore en charge la version 1.8. *), Relatif inclut le démarrage à partir de la bibliothèque , pas votre répertoire. Il semble que le filtre ano-to-C (rappelez-vous qu'Arduino effectue une "conversion" vers la cible puis appelle le compilateur C / C ++) commence là où vous avez installé votre arbre Arduino. Dans mon cas, j'ai installé dans "~ / bin / arduino". La maison de Teensy est "./hardware/teensy". Le chemin d'accès complet pour les bibliothèques est "~ / bin / arduino / hardware / teensy / avr / bibliothèques" où vous trouverez toutes les arborescences de programmes de support.
Dans un fichier source, l'instruction '#include "test.hpp"' sélectionne correctement le fichier dans votre répertoire actuel. TOUTEFOIS, si vous utilisez '#include "../test.hpp",' le chemin d'inclusion ne démarre pas dans le répertoire de votre projet. Au lieu de cela, il commence dans "./ bibliothèques"! Le chemin résultant est donc:
#include "../test.hpp" ==> ./arduino/hardware/teensy/avr/libraries/test.hpp
En conclusion, il n'existe aucun moyen propre de créer votre propre arborescence d'outils dans un répertoire proche. Le seul cours est de valider votre travail dans la bibliothèque Arduino et d'être également conscient de ces règles.