mikrocontroller.net

Forum: Compiler & IDEs zeit im makefile


Autor: Philipp Karbach (Gast)
Datum:

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

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sollte eigentlich gehen. Dafür musst du in deinem Quellcode halt
sowas wie
stunde = STUNDE;
minute = MINUTE;
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.

Autor: Philipp Karbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jup das hab ich mir auch so gedacht aber kann ich mir nicht die
systemzeit im makefile definieren lassen, in linux geht das bestimmt
über ein bisschen bash ;)

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sonst schreib dir doch nen kleines Programm in C was
Stunde/Minute/Sekunde ausgibt und lass das im Makefile verarbeiten.
Oder nimm gleich "date".

Autor: Ssss Ssssss (sssssss)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Ich mach sowas ähnliches per script:

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

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

.buildid
1009

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

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

Im Makefile dann noch:
all: begin gccversion sizebefore buildid build sizeafter finished end
...
buildid:
        @bash makebuildid.sh
...

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

Bye, Simon

Autor: Philipp Karbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm das ist ne schöne sache :) wenn ich mir jetzt cygwin installiere
sollte das auch mit windows gehen!

Autor: Timmo H. (masterfx)
Datum:

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

Autor: Philipp Karbach (Gast)
Datum:

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

Autor: Philipp Karbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
achja Simon, da ist ein fehler in deiner bash script:

ts=`date +"%H:%m %d/%m/%Y"`;

+"%H:%m gibt STUNDE:MONAT aus, es muss %M heißen für die minuten!

Autor: Ssss Ssssss (sssssss)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
:-X Danke !
Ist bis jetzt noch keinem aufgefallen ggg
(benutze das in meinem avrETH projekt)

Bye, Simon

Autor: Philipp Karbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist mir nur dadurch aufgefallen weil zeit und monat irgendwie immer
gleich waren ;)

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.