Moin! zwei kleine Python-Skripte samt Config-Dateien für automatisierte Builds ohne manuelle Eingriffe im Makefile. Intro : In meinem Fall verwende ich für die meisten Projekte eine Verzeichnisstruktur wie folgt: /workspace/libDir /workspace/myProject1 /workspace/myProject2 Basierend auf der avr-libc enthält libDir projektübergreifend Bibliotheksfunktionen zur Ansteuerung von timer, i2c, i2c komponenten, etc. Die eigentliche Funktionalität eines Projekts wie auch projektspezifische Konfigurationen sind in myProject1 etc. zu finden. Dieser Ansatz ähnelt dem von avrlib. Die Versionskontrolle für fertige Projekte erfolgt mittels svn:externals und svn:prjheoperties. BuildTargets - Bibliotheken auf Plattformkompatibilität testen: Da ich es hier z. T. mit unterschiedlichen AVR-Architekturen zu tun habe (Mega8, Mega168, Mega32 etc.) ist die Bibliothek durch entsprechende #ifdef Anweisungen target-unabhängig aufgebaut. Aufbauend auf einem generischen Makefile ist es mit Hilfe von buildTargets.py möglich, alle unterstützten Architekturen in einer Config-Datei anzugeben. Dieses Skript sucht nun in den angegebenen Source-Foldern (siehe buildTargetsSrcDirs.conf) nach *.cpp und *.c Dateien (mehrere Verzeichnissebenen werden unterstützt), kompiliert die gefundenen Quellen für die jeweilige Zielplattform und linkt alles zu einer Bibliothek. Separate Verzeichnisse für build, dep, obj werden unterstützt. Werden unbekannte (nicht falsche!) register etc. für eine der Zielarchitekturen verwendet, so kommt die entsprechende Fehlermeldung. Hiermit wird erreicht, dass zumindest syntaktisch korrekter Code vorliegt. Code: buildTargets.zip AutoMake für Arme - *autobuild.zip* Hierauf aufbauend wurden die Skripte erweitert, um nahezu ohne Nutzereingriffe ein Projekt zu kompilieren. Eine Config-Datei (build.properties) enthält MCU, F_CPU, TargetName sowie eventuelle externe Source-Verzeichnisse. Dazu ein generisches Makefile. build.py sucht im eigenen Verzeichnis und Unterverzeichnissen (sowie extern, wenn angegeben) nach Quellen, kompiliert und linkt diese zum angegebene Target. Fertig. Make für Faule, sozusagen. Individuelle, projektspezifische Optimierungsschritte fehlen natürlich. Aber für Testprojekte mit begrenzter Lebensdauer praktisch :-) cu, mz.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.