Quiero incluir una dependencia como Logging . En su página dice:
- Descargar archivo zip
- Coloque la carpeta de registro en "bibliotecas \".
No quiero creer (con una mentalidad de Maven) que esta es la forma en que gestionamos las dependencias en los proyectos de Arduino. Eso significa que todos los que revisen mi paquete tendrían que repetir esos pasos localmente (o incluyen "bibliotecas \" en el control de versiones) ¿Cuál es la mejor práctica para la gestión de dependencias?
crosscompiling
Respuestas:
Arduino está destinado a ser una forma fácil para personas no técnicas y, por lo tanto, oculta todo lo que puede a simple vista para ser simple.
Para un proyecto simple, funciona a costa de la sobrecarga de copiar bibliotecas aquí y allá y usar el "IDE" de Arduino. Llamando a los programas "bocetos" y manipulándolo para ocultar, que está en C ++. Y así sucesivamente y así sucesivamente.
Si desea realizar proyectos más complicados, control de versiones, buen entorno y demás, debe abandonar "simplemente Arduino" y comenzar a utilizar herramientas más potentes y complicadas.
Yo personalmente uso https://github.com/sudar/Arduino-Makefile https://github.com/ladislas/Bare-Arduino-Project y lo tengo en los repositorios de GIT.
De esta manera puedo compartir bibliotecas entre proyectos en grupo, también enlaces a bibliotecas fuera del árbol, así como submódulos gits, lo que le permite tener bibliotecas actualizadas de terceros disponibles para todos los proyectos, también aquellos antiguos.
Todavía uso mucho Arduino (como setup / loop, digitalRead y demás), pero también uso construcciones "normales" de g ++ en el camino. Más tarde, divergiré aún más para codificar código C / g ++ / .. probablemente, usando algunos RTOS más o menos, pero ahora mis necesidades aún no están tan lejos. (google "arduino rtos" Actualmente estoy leyendo https://github.com/greiman/NilRTOS-Arduino )
Arduino no pretende ser la "mejor práctica" de todos modos. Está destinado a ser "una forma rápida y fácil de hacer algo, cuando no sabes nada". Y funciona, ya que cualquiera y su perro pueden comenzar con Arduino y, si está interesado, puede llegar más lejos por su cuenta, o puede seguir con lo fácil y divertirse de todos modos.
fuente
Si desea que el proyecto sea autónomo, puede colocar las dependencias de la biblioteca en la carpeta de croquis. Entonces, la estructura de carpetas del boceto de Foo con la dependencia de la biblioteca Logging se vería así:
Y en Foo.ino incluirás la biblioteca así:
Desafortunadamente, algunas bibliotecas usan la sintaxis de inclusión incorrecta que todavía funciona cuando la biblioteca está instalada en una de las carpetas de las bibliotecas, pero no cuando se encuentra en la carpeta de croquis. La biblioteca de registro utiliza la sintaxis de inclusión correcta, pero a veces para colocar las bibliotecas en la carpeta de bocetos, deberá corregir esto. Por ejemplo, supongamos que tiene una biblioteca llamada Bar y en Bar.cpp verá esto:
Eso no funcionará porque si está instalado en la carpeta de croquis Bar.h no se ubicará en una de las rutas de inclusión estándar, por lo que debe editar Bar.cpp y cambiar la sintaxis de inclusión a:
Lo que hará que se busque en la carpeta local el archivo incluido.
La desventaja de este sistema es que puede terminar con varias copias de una biblioteca, por lo que es más trabajo actualizar o modificar cada copia. Por supuesto, eso también puede ser un beneficio porque cada proyecto puede tener su propia versión de la biblioteca que funciona y que no se verá afectada por las actualizaciones que pueda hacer a la misma biblioteca utilizada en otros proyectos.
En general, solo agrego instrucciones sobre cómo instalar las dependencias de la biblioteca de la manera habitual a la documentación de un proyecto. Eso debería estar dentro de las capacidades del usuario promedio de Arduino. Si es necesaria una versión específica de una biblioteca, entonces documente eso. Sin embargo, hay casos en los que he querido entregar un proyecto autónomo a alguien que no está familiarizado con el uso de Arduino IDE y es cuando utilicé el sistema descrito anteriormente para todas las bibliotecas de terceros necesarias.
fuente