Soy nuevo en el desarrollo de Arduino / C (proveniente de un entorno JavaScript / Ruby), pero me preguntaba si era posible incluir una biblioteca de una carpeta personalizada dentro de un boceto.
Entonces esta es mi situación;
project.ino
libs/
MyNewLib/
MyNewLib.h
MyNewLib.ccp
Ahora mi pregunta es: ¿cómo puedo incluir mi biblioteca personalizada? He intentado varias variaciones en esto;
# project.ino
#include <libs/MyNewLib/MyNewLib.h>
#include "libs/MyNewLib/MyNewLib.h"
#include <./libs/MyNewLib/MyNewLib.h>
#include "./libs/MyNewLib/MyNewLib.h"
Pero ninguno de ellos funciona. ¿Alguien puede decirme si esto es posible? He examinado esta pregunta en la web, pero no puedo encontrar ninguna respuesta satisfactoria. Espero que ustedes puedan ayudar.
Salud.
ACTUALIZAR
Soy consciente de que puede colocar sus bibliotecas en su carpeta de bibliotecas globales, pero las quiero en mi carpeta de proyecto local. Quiero compartirlos a través de git con mi equipo.
library
sketch
system-design
Stefan
fuente
fuente
include
especificando la ruta / a / library / que es lo que supongo que está preguntando.Respuestas:
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.
fuente
Acabo de volver a usar el arduino después de un tiempo y estoy un tanto desconcertado por problemas similares y confundido por información diferente de diferentes sitios y para diferentes versiones del ide.
Lo que he encontrado es que si tiene un boceto en un directorio, apague el Ide, puede soltar archivos .h, .cpp ... en el directorio y el ide, cuando se reinicie, los abrirá con el boceto.
Inclúyalos usando comillas simples en los nombres de archivo, sin ruta, sin corchetes angulares.
Estoy seguro de que esto es solo una parte de la respuesta completa, pero me ha ayudado a comenzar.
fuente
Hasta donde yo sé, puede incluir sus bibliotecas desde una ubicación personalizada utilizando su ruta absoluta.
Dado que las rutas absolutas pueden ser aburridas desde el punto de vista de la portabilidad del código, puede definir algunas macros para obtener la ruta absoluta de un pariente determinado. De esta manera, solo tendría que arreglar la ruta de 'raíz del proyecto' al pasar de un dispositivo a otro.
Defina la carpeta raíz de su proyecto:
Defina una macro 'transformación' relativa a absoluta:
Incluya sus archivos usando la ruta relativa:
Espero que te sea útil.
fuente
El complemento Arduino para Visual Studio admite bibliotecas locales. Puede encontrar el complemento aquí.
fuente
Recientemente probé esta estructura de biblioteca local. Funciona con:
El preprocesamiento de compilación Arduino IDE 1.6.7 incluso recogerá el código fuente de la biblioteca.
¡Salud!
fuente
La forma más sencilla que he encontrado para hacer esto es almacenar las bibliotecas en su directorio de croquis local y crear un enlace simbólico en el directorio [INICIO] / Arduino / bibliotecas. Luego puede registrarlos en Git fácilmente con su boceto / proyecto y Arduino todavía está contento porque las bibliotecas están accesibles en la carpeta global.
Tal vez incluso cree un script de instalación que cree estos enlaces automáticamente y verifique eso en Git también.
fuente
Otra solución realmente mala: cree un archivo llamado
libraries.cpp
, que contenga:Por supuesto, esto solo funciona si la biblioteca no contiene ningún incluye ...
fuente