mikrocontroller.net

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


Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: kosmonaut pirx (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: e_g (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Elektro Gandalf (e_g)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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!

Autor: Elektro Gandalf (e_g)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keine Buildnummer, aber auch ganz nützlich: _DATE__ und __TIME_.

Autor: testbürger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tolles Programm, sowas habe ich auch schon immer gesucht!

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: detlef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei mir funzt es nicht!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.