Cela faisait longtemps que je cherchais une bonne réponse à cette question.
En règle générale, tout projet Arduino, mais le plus simple, comprendra:
- Le fichier de code source principal
MyProject.ino
- Bibliothèques spécifiques au projet (
MyProjectLibrary1.h
,MyProjectLibrary1.cpp
...) - Bibliothèques tierces (généralement open source, ajoutées manuellement au répertoire des bibliothèques Arduino)
- Schémas, diagrammes de PCB
- Documentation
- ...
Tout cela rend difficile de garder tout le code et la documentation d'un projet sous Gestion du code source (par exemple, sur Subversion, Git ou GitHub).
La gestion du contrôle de la source de votre projet implique la gestion de la version de tous les fichiers utilisés par le projet, y compris les bibliothèques tierces.
Maintenant, pour un seul projet, je dois définir une structure de répertoire qui:
- Inclut tous les fichiers de projet décrits ci-dessus
- Je peux entièrement m'engager dans un outil de gestion de code source (y compris les dépendances de tiers)
- Je peux commander n'importe où sur mon disque dur et construire le projet à partir de là (faut-il que ce soit un emplacement unique tel qu'imposé par Arduino IDE)
- Je peux zipper dans une archive autonome que je peux envoyer à un ami pour qu'il le construise aussi facilement que possible (pas de téléchargement manuel supplémentaire)
Ce que je trouve particulièrement délicat avec les projets Arduino, c’est la gestion des dépendances de bibliothèques externes. Les développeurs de projets Java disposent de référentiels maven pour cela, ce qui facilite grandement la gestion de tous les dépôts externes. Mais nous n'avons pas de système équivalent pour les bibliothèques Arduino.
Je serais intéressé de savoir comment d'autres porteurs de projets Arduino traitent de ces aspects dans leurs propres projets.
Notez également que je suis ouvert à la modification de mon processus de développement, y compris de mon IDE (actuellement, j'utilise Eclipse avec le plug-in Arduino la plupart du temps, puis je veille à ce que mes projets puissent également fonctionner directement avec l'IDE Arduino).