Forum: Compiler & IDEs build-Nummer beim kompilieren erzeugen (WinAVR)


von Andi (Gast)


Lesenswert?

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

von Hans (Gast)


Lesenswert?

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

von kosmonaut pirx (Gast)


Lesenswert?

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

von e_g (Gast)


Lesenswert?

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!

von Hans (Gast)


Lesenswert?

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

von Andi (Gast)


Lesenswert?

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 ;)

von Andi (Gast)


Lesenswert?

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

von Elektro G. (e_g)


Angehängte Dateien:

Lesenswert?

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!

von Elektro G. (e_g)


Lesenswert?

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!

von Andreas K. (a-k)


Lesenswert?

Keine Buildnummer, aber auch ganz nützlich: _DATE__ und __TIME_.

von testbürger (Gast)


Lesenswert?

Tolles Programm, sowas habe ich auch schon immer gesucht!

von Rolf Magnus (Gast)


Lesenswert?

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.

von detlef (Gast)


Lesenswert?

bei mir funzt es nicht!

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
Noch kein Account? Hier anmelden.