Ha pasado mucho tiempo que he estado buscando una buena respuesta a esta pregunta.
Típicamente, cualquier proyecto de Arduino pero el más simple incluirá:
- El archivo de código fuente principal
MyProject.ino
- Bibliotecas específicas del proyecto (
MyProjectLibrary1.h
,MyProjectLibrary1.cpp
...) - Bibliotecas de terceros (generalmente de código abierto gratuito, agregadas manualmente al directorio de bibliotecas Arduino)
- Esquemas, diagramas de PCB
- Documentación
- ...
Todo esto hace que sea difícil mantener todo el código y el documento de un proyecto en Gestión del código fuente (por ejemplo, en Subversion, Git o GitHub).
Administrar el control de origen de su proyecto significa administrar la versión de todos los archivos utilizados por el proyecto, incluidas las bibliotecas de terceros.
Ahora, para un solo proyecto, necesito definir una estructura de directorio que:
- Incluye todos los archivos del proyecto como se describe arriba
- Puedo comprometerme completamente con una herramienta de administración del código fuente (incluidas las dependencias de terceros)
- Puedo pagar en cualquier lugar de mi disco duro y construir el proyecto desde allí (¿tiene que ser una única ubicación impuesta por Arduino IDE)
- Puedo comprimir un archivo autónomo que puedo enviar a un amigo para que lo construya lo más fácilmente posible (sin descarga manual adicional)
Lo que encuentro particularmente complicado con los proyectos de Arduino es la gestión de dependencias de bibliotecas externas. Los desarrolladores de proyectos Java tienen repositorios expertos para eso y eso ayuda mucho en la gestión de todos los departamentos externos. Pero no tenemos un sistema equivalente para las bibliotecas Arduino.
Me interesaría saber cómo otros creadores de proyectos de Arduino abordan estos aspectos en sus propios proyectos.
También tenga en cuenta que estoy abierto a cambiar mi proceso de desarrollo, incluido mi IDE (actualmente uso Eclipse con el complemento Arduino la mayor parte del tiempo, y luego me aseguro de que mis proyectos también puedan funcionar directamente con el IDE de Arduino).