Forum: Mikrocontroller und Digitale Elektronik Kompilierdatum einfügen


von Benny Platte (Gast)


Lesenswert?

Hallo,

habe ich in WinAVR die Möglichkeit, per Präprozessor-Anweisung das
Kompilierdatum in den generierten Code einzufügen?
Grund: Die Geräte sollen per Info-Befehl die Software-Version und das
Kompilierdatum ausgeben, und ich möchte nicht bei jedem Gerät immer
diese Daten per Hand in einen Flash-String eingeben, sondern sie sollen
dort automatisch landen. Ich stelle mir eine Präprozessor-Variable vor
wie #date und #time, evtl. sogar #file oder #projectname.

Geht das?

von Unbekannter (Gast)


Lesenswert?

#include <stdio.h>

int main()
{
  puts(_DATE_);
  puts(_TIME_);
  puts(_FILE_);
  return 0;
}

von TheMason (Gast)


Lesenswert?

Hallo Benny,

ich weiß vom MS Visual Studio das es eine direktive namens _LINE_
oder _FILE_ gibt mit der man die aktuelle zeilennummer bzw. den
aktuellen dateinamen als string geliefert bekommt.
Ist aber unter MS keine präprozessor-direktive sondern ein Makro
(glaube ich jedenfalls)
Versuchs doch mal mit _DATE__ und __TIME_

Gruß
Rene

von R2D2 (Gast)


Lesenswert?

Unter Linux kannst du's mit diesem Maketarget machen:

.PHONY : date
date:
  @echo "const char build[]=\"Compiled: `date +%d.%m.%Y`\";" >
date.c
  @touch -t `date +%Y%m%d`0000.00 date.c

der erste Befehl schreibt einen String mit dem Datum in date.c. Der 2
stellt das Änderungsdatum auf 0Uhr, so das die Datei nur 1x am Tag
compiliert wird.

Unter Windows dürfte das in etwas so aussehen:
.PHONY : date
date:
  @echo "const char build[]=\"Compiled: " > date.c
      @date >> date.c
      @echo "\";"

Ich weiß nicht ob die Anführungszeichen für Windows richtig escaped
sind und ob date weitere Parameter erwartet. Ein Tool wie touch ist mir
bei Windows nicht bekannt.

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.