Ich habe lange nach einer guten Antwort auf diese Frage gesucht.
In der Regel umfasst jedes Arduino-Projekt, außer dem einfachsten, Folgendes:
- Die Hauptquellcode-Datei
MyProject.ino
- Projektspezifische Bibliotheken (
MyProjectLibrary1.h
,MyProjectLibrary1.cpp
...) - Bibliotheken von Drittanbietern (im Allgemeinen kostenlos, Open Source, manuell zum Arduino-Bibliotheksverzeichnis hinzugefügt)
- Schaltpläne, PCB-Diagramme
- Dokumentation
- ...
All dies macht es schwierig, den gesamten Code und das Dokument eines Projekts unter Quellcodeverwaltung zu halten (z. B. auf Subversion, Git oder GitHub).
Die Verwaltung der Quellcodeverwaltung Ihres Projekts umfasst die Verwaltung der Version aller vom Projekt verwendeten Dateien, einschließlich der Bibliotheken von Drittanbietern.
Jetzt muss ich für ein einzelnes Projekt eine Verzeichnisstruktur definieren, die:
- Schließt alle Projektdateien wie oben beschrieben ein
- Ich kann mich vollständig auf ein Quellcode-Management-Tool festlegen (einschließlich Abhängigkeiten von Drittanbietern)
- Ich kann überall auf meiner Festplatte auschecken und das Projekt von dort aus erstellen (muss es ein einzelner Speicherort sein, wie von Arduino IDE vorgeschrieben)
- Ich kann in ein eigenständiges Archiv zipgen, das ich einem Freund senden kann, damit er es so einfach wie möglich erstellt (kein zusätzlicher manueller Download).
Was ich bei Arduino-Projekten besonders schwierig finde, ist die Verwaltung der Abhängigkeiten externer Bibliotheken. Java-Projektentwickler haben dafür Maven- Repositorys, die bei der Verwaltung aller externen Deps sehr hilfreich sind. Wir haben jedoch kein gleichwertiges System für Arduino-Bibliotheken.
Es würde mich interessieren, wie andere Arduino-Projekthersteller in ihren eigenen Projekten mit diesen Aspekten umgehen.
Beachten Sie auch, dass ich bereit bin, meinen Entwicklungsprozess, einschließlich meiner IDE, zu ändern (derzeit verwende ich Eclipse die meiste Zeit mit dem Arduino-Plugin und stelle dann sicher, dass meine Projekte auch direkt mit der Arduino-IDE funktionieren).