Bien, así es como funciona, y lo revisé para asegurarme.
Claro que puedes usar rutas difíciles, pero cada programador odia usar rutas difíciles. No son portátiles en absoluto y bloquean su programa en su lugar. Utiliza enlaces suaves o duros a los archivos en el proyecto (busque las páginas de manual en "ln"). Pero, ... hablamos de feo! ¿Entonces la pregunta es cómo hacerlo "correctamente"? La clave es aprender con qué parámetros y en qué ruta se ejecuta el compilador C / C ++.
Encontrará que la conclusión NO es intuitiva en absoluto. Corte al grano: los caminos relativos no funcionan correctamente. ¿Ahora por qué?
Pero primero, permítanme explicar por qué alguien querría colocar archivos de programa fuera del directorio del proyecto. A los programadores les gusta escribir clases de programas, estructuras, métodos, funciones, macros, etc., una vez. Tan pronto como el programador solidifique el fragmento del programa, él / ella quiere poner los archivos en un árbol común y seguir adelante. Todos los programas posteriores podrían usar esa biblioteca privada. Además, al tener los archivos en un lugar central, no tendrá múltiples copias y versiones de cada uno. Una biblioteca privada para muchos programas privados.
A partir del 1.6.13 (Teensy aún no es compatible con 1.8. *), El relativo incluye el inicio desde la biblioteca , no desde su directorio. Parece que el filtro de ano a C (recuerde que Arduino hace una "conversión" al objetivo y luego llama al compilador C / C ++) comienza donde instaló su árbol Arduino. En mi caso, lo instalé en "~ / bin / arduino". La casa de Teensy es "./hardware/teensy". La ruta de inicio completa para las bibliotecas es "~ / bin / arduino / hardware / teensy / avr / bibliotecas", donde encontrará todos los árboles de programas de soporte.
En un archivo fuente, la instrucción '#include "test.hpp"' selecciona correctamente el archivo de su directorio actual. SIN EMBARGO, si usa '#include "../test.hpp", la ruta de inclusión no comienza en el directorio de su proyecto. En cambio, comienza en "./bibliotecas". Entonces la ruta resultante es:
#include "../test.hpp" ==> ./arduino/hardware/teensy/avr/libraries/test.hpp
En conclusión, no hay una forma limpia de hacer su propio árbol de herramientas en un directorio cercano. El único curso es comprometer su trabajo en la biblioteca Arduino y estar al tanto de esas reglas también.