Hallo, hat von euch jemand eine Idee, wie ich eine build-Nummer in meine Sourcen integrieren kann. Ich habe bereits die Dateien version.h und version.c in der ich die Versionsnummer als c-String gespeichert habe. Beim einschalten wird diese dann kurz am Display dargestellt. Und da würde ich eben gern noch die Build-Nummer anzeigen. Es sollte also jedesmal beim kompilieren eine Variable hochgezählt werden und dann in version.c ersetzt werden. Oder wegen mir auch in einer weitere Datei, in der nur die build-Nummer steht. Kann man sowas im Makefile machen? Hat jemand ne Idee bzw. sowas schonmal gemacht? Ich verwende AVR-Studio mit WinAVR. Grüße Andi
ein kleines prog ausführen, dass dir genau das macht (neuen version string basteln) für sowas gibts ja die make-file...um im prebuild noch sachen machen zu können ;) unter linux würd ein bash-script reichen.. winavr liefert die nicht mit oder ? 73
hallo, na du könntest beim compiler-aufruf ein macro definieren (mit -D geht das, iirc). den aufruf macht das makefile, also da eine variable drin definieren. und der inhalt der variablen kann gerne aus einer datei stammen, welche du nach dem build (auch durch das makefile) neu schreibst. bye kosmo
Kannst dir ein Prog schreiben, das die die Version ausliest eins hochzählt und speichert. Der Aufruf des Progs kannst du in der Makedatei machen!
da fällt mir ein.. wenn du schon build-nummern mitkompilierst, solltest du doch auch den source zu dem build irgendwo haben... im ct' gabs mal son backup-script mit rsync (damit der platz nicht ganz so verschwendet wird ;) das könnte nach kleiner modifikation dir auch deine version.h generieren... 73
Hi, danke für die Hilfe. Hab mal ne Datei build.h mit dem Inhalt: #define BUILD 200 angelegt und ein vbs-Skript geschrieben, dass den Wert ausliest um 1 erhöht und wieder in die Datei schreibt. Wie kann ich nun dieses Skript ins AVRStudio integrieren, dass es beim kompilieren ausgeführt wird? Hab die vbs mal angehängt, falls es jemand interessiert (hab allerdings keine Ahnung von vbs -> ist sicher optimierbar ;)
Dateianhang geht irgendwie nicht also hier: ' Datei mit build-Nummer file = "build.h" ' Datei zum lesen öffnen Set fso = CreateObject("Scripting.FileSystemObject") ' wenn existiert If fso.FileExists(file) Then Set fi = fso.OpenTextFile(file) ' Zeile lesen text = fi.Readline ' Nummer rausfiltern i = 4 do nummer = RIGHT( text, i ) i = i - 1 Loop While not IsNumeric( nummer ) ' um 1 erhöhen nummer = nummer + 1 ' Datei zum schreiben öffnen Set fi = fso.OpenTextFile(file, 2) ' schreiben fi.Write "#define BUILD " & nummer End If
so also pass mal auf hatte heute Abend ein bisschen Zeit. Habe da ein Prog geschrieben, kopiere es nach C:\Programme\WinAVR\bin oder habt dahin, wo du WinAVR installiert hast. so, im Makefile fügst du folgende Zeile hinzu (an der entsprechenden stelle): # Define programs and commands. SHELL = sh [..] incbuild = incBuild version.h BUILD und all: begin gccversion inc sizebefore build sizeafter finished end build: elf hex eep lss sym elf: $(TARGET).elf hex: $(TARGET).hex eep: $(TARGET).eep lss: $(TARGET).lss sym: $(TARGET).sym inc: @$(incbuild) so dann sollte es gehen!
nochwas zum Programm: man braucht das Framework von MS in der define- Zeile im Sourcecode darf kein Kommentar stehen kann fehler enthalten!!! incbuild = incBuild version.h BUILD 1. Parameter: Sourcefile 2. Parameter Name des defines, das hochgezählt werden soll!
Keine Buildnummer, aber auch ganz nützlich: _DATE__ und __TIME_.
Tolles Programm, sowas habe ich auch schon immer gesucht!
Wozu braucht man denn einen Zähler, der einem sagt, wie oft es compiliert wurde? Interessant ist doch eigentlich eher eine Versionsnummer, die sich bei Änderungen erhöht. Da man den Quellcode eh sinnvollerweise sowieso mit einem Revisionskontrollsystem wie SVN oder CVS verwaltet, kann man das auch darüber machen. Bevor man die Firmware draufflasht, macht man einen Commit. Bei SVN ist die Versionsnummer immer global für ein ganzes Modul, somit kann man die direkt verwenden. Bei CVS wird für jede Datei eine eigene Revisionsnummer verwendet. Aber man kann ein kleines Skript einhängen, das bei jedem Commit einen Zähler erhöht und in einer Datei hinterlegt. Bei anderen RCS gibt's sicher ähnliche Möglichkeiten.
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.