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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren