zeit im makefile

Gast #365411
Lesenswert?
• ▲
▼
bei winavr lassen sich ja mit MFile sehr nette makefiles erstellen. Der
Prozessortakt ist darin mit einem define als F_CPU deklariert, diese
lässt sich dann im code nutzen und wird durch die makefile
vorgeschrieben. Ich hab mir ne kleine Uhr für den AVR geschrieben nur
leider muss ich immer die startzeit von hand eingeben. Kann man das
nicht ins makefile schreiben? So dass ich die stunden,minuten,sekunden
im makefile erst definiere und dann während dem compilieren einstelle?
#365412
Lesenswert?
• ▲
▼
Das sollte eigentlich gehen. Dafür musst du in deinem Quellcode halt
sowas wie
1
stunde = STUNDE;
2
minute = MINUTE;
3
sekunde = SEKUNDE;
schreiben, und dann im make-File die CFlags so erweitern:
-DSTUNDE = 15 -DMINUTE = 32 -DSEKUNDE = 00

Allerdings sind das dann feste Werte, kann sein dass gcc für die
Uhrzeit auch Variablen hat. Müsste man mal inna Doku gucken.
#365415
Lesenswert?
• ▲
▼
Hi!

Ich mach sowas ähnliches per script:

makebuildis.sh
1
#!/usr/bin/sh
2
id=`cat .buildid`;
3
id=$[$id+1];
4
echo -n $id > .buildid;
5
ts=`date +"%H:%m %d/%m/%Y"`;
6

7
echo -e "#ifndef _BUILD_H_\n#define _BUILD_H_\n#define BUILD_ID
8
\"$id\"\n#define BUILD_TIMESTAMP \"$ts\"\n#endif\n\n" >
9
build.h

.buildid
1
1009

makebuildid.sh liefert ne build.h:
1
#ifndef _BUILD_H_
2
#define _BUILD_H_
3
#define BUILD_ID "1009"
4
#define BUILD_TIMESTAMP "12:05 03/05/2006"
5
#endif

Die include ich einfach in meinem Projekt und kann dann auf BUILDID etc
zugreifen.

Im Makefile dann noch:
1
all: begin gccversion sizebefore buildid build sizeafter finished end
2
...
3
buildid:
4
        @bash makebuildid.sh
5
...

Geht sicher auch einfacher, funktioniert aber ;)
(ein make generiert einen neuen Timestamp und zählt die buildid hoch)

Bye, Simon
#365417
Lesenswert?
• ▲
▼
Da Philipp aber WinAVR benutzt würde ich mal sagen, dass er nicht Linux
sondern Windows verwendet. Für ihn kommt daher nur ein kleines
C-Programm in Frage. Am einfachsten bekommst du dir Uhrzeit über cmd
mit dem Befehl "time /T", das könntest du dann über ein kleines
C-Programm in das Makefile eintragen lasssen.
Gast #365418
Lesenswert?
• ▲
▼
da hast du nicht so ganz recht, natürlich kann ich das machen aber
cygwin ist ein paket ähnlich wie winavr. Damit kann man viele
standardpakete von linux auf dem windows shell laufen lassen. Ich hab
das oben genannte skript gerade auf windows ausgeführt und es macht
genau was es soll :).

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.