Hallo Forum, ich habe schon viel gesucht und finde nichts funktionierendes für Windows. Im makefile möchte ich das zum Aufrufzeitpunkt aktuelle Datum und die Uhrzeit in einer Variable haben und dann an den Dateinamen anhängen. Wie bekomme ich Datum und Uhrzeit in eine Variable? Für Linux gibt es viele Beispiele, die ich aber nicht übertragen kann.
"__DATE__" und "__TIME__" sind die Variablen $target der filename Setze es zusammen und du hast was du möchtest. Gerry
Das klappt bei mir nicht. Wenn ich folgendes mache: DATE = _DATE_ OUTPUTNAME = test_$(DATE) Kommt test___DATE__ heraus...
Make my date... schrieb: > Das klappt bei mir nicht. > Wenn ich folgendes mache: > > DATE = __DATE__ > OUTPUTNAME = test_$(DATE) > > Kommt test___DATE__ heraus... Um mal die ganz offensichtlichen Fragen zu stellen: - was für ein Windows und deutsch oder englisch oder was? - welches Make? Sprache könnte wichtig sein weil sich die Formate von Datum/Zeit da unterscheiden.
Ok, das war mir nicht klar. Also es handelt sich um ein Makefile für den avr-gcc (winavr-20100110) unter Windows 7 (64bit) Deutsch. Wäre natürlich gut, wenn es unter XP und Win7 (32bit) und Englisch auch funktioniert. Wie man es für eine andere Sprache formatiert ist dann ja eigentlich ein weiterer Schritt. Wenn es anders aussieht ist ja nicht schlimm. Zumindest scheint es aber grundsätzlich anders als unter Linux zu gehen, denn dazu finde ich viel, was aber unter Win nicht klappt. make ist Version 3.81 built for i386-pc-mingw32 Danke!
WinAvr bringt eine ganze Menge Linux Tools (mingw) mit, schau mal ob "date" dabei ist und dann erweitere %PATH% um den Pfad zu date Im Makefile steht dann:
1 | OUTPUTNAME=test_$(shell date +"%Y%M%d_%H%m") |
2 | |
3 | foo: |
4 | echo $(OUTPUTNAME) |
__DATE__ und __TIME__ sind Preprozessor Macros, das Format eignet sich aber weniger zur Filenamensbildung:
1 | echo __DATE__ __TIME__ | avr-gcc -E - |
2 | # 1 "<stdin>" |
3 | # 1 "<built-in>" |
4 | # 1 "<command-line>" |
5 | # 1 "<stdin>" |
6 | "Jul 4 2013" "09:00:46" |
A. W. schrieb: > OUTPUTNAME=test_$(shell date +"%Y%M%d_%H%m") Wow, das funktionierte auf Anhieb. Komisch, mit date habe ich es schon probiert gehabt, aber ich glaube ohne das "shell". Komisch ist nur, dass die Reihenfolge beim Datum nicht passt (Monat und Tag vertauscht) und die Zeit 2 Std und 20 Minuten daneben liegt. Um 9:27 Uhr habe ich folgenden Output erhalten: test_20132704_0707.hex Hast du dazu noch eine Idee?
Hm, ne irgendwas stimmt da nicht. Die Zeit ist immer gleich und das Datum irgendwie falsch. Um 9:36 Uhr am 4.07.2013 mit $(shell date +"%Y%M%d_%H%m") test_20133604_0707.hex
Übrigens "C:\WinAVR\utils\bin" stand schon in der PATH Variablen...
Hm, probier mal das Alphabet durch, ich glaub ich hab da die Gross/Kleinschreibung der Wechselstaben verbuchselt. "date --help" is your friend.
"date --help" funktioniert leider nicht, das hatte ich auch schon versucht... Aber weder ein Monat noch ein Tag 36 ergibt Sinn?! Irgendwas ist da faul...
Hallo, tausche mal %m und %M. Großes M steht für Minute, kleines m steht für Monat.
Komisch, dass die Hilfe nicht geht. Nur am Rande: Googlen nach "Hilfe zu Date" ist nicht zielführend ;-) Das Vertauchen von %m und %M sieht gut aus. DATETIME = $(shell date +"%Y%m%d_%H%M") Jetzt bin ich noch 2 Stunden daneben, vermutlich eine Zeitzonengeschichte.
Make my date... schrieb: > Nur am Rande: Googlen nach "Hilfe zu Date" ist nicht zielführend ;-) Wenn du nach Hilfe für Kommandos suchst, die aus der Unix-Welt kommen, dann suche nicht nach "Hilfe zu", sondern nach "manpage", oder "man page", oder "manual", oder ...
Also angezeigt wird die Zeit als GMT Zeit. Wir sind aber GMT +2 bei Sommerzeit und GMT +1 bei Winterzeit. Kann man nicht die Zeit, die Windows darstellt herausbekommen?
#Sommerzeit +2, Winterzeit +1 DATETIME = $(shell date --date='GMT +2 hours' +"%Y%m%d_%H%M") Das soll mir jetzt reichen. Vielen Dank für die Hilfe!
Make my date... schrieb: > Kann man nicht die Zeit, die Windows darstellt herausbekommen? hat aber den nachteil das dann die Zeit nicht mehr eindeutig ist. Wenn du in der Nacht der umschaltung etwas erzeugst woher willst du wissen wann du es gemachst hast? Jeder Zeitpunkt gibt es dann immer 2mal.
Aber ich arbeite nachts nicht und mache auch keine nightly builds... ;-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.