Hallo Leute, Ich habe im Moment folgendes Problem. In einem MAKEFILE von einem AVR Projekt habe ich folgende Zeile mal eingebaut um das Build-Datum in den Code zu bringen: BUILD_DATE = $(shell date +'\"%y%m%d\"') Alles lief immer hervorragend (das Bauen lief unter XP sowohl aus der Windows Kommandozeile, als auch aus Eclipse mit dem AVR Plugin super). Unter Windows 7 sieht das Ganze schon deutlich anders aus. Aus irgendwelchen Gründen (Cygwin, Eclipse, Windows?) will Windows 7 dort immer das builtin "date" aus der Windows Kommandozeile dort ausführen, was natürlich nicht klappt. Ich habe bereits versucht den Cygwin Binaries Pfad in der Windows-PATH Variable nach ganz vorne zu schaffen, aber das half auch nicht (war mir irgendwie auch klar). Bin da etwas hilflos. Gibt es irgendeinen einfachen Hack, das MAKEFILE anzuweisen, dass es "date" aus Cygwin/bin benutzt? Viele Grüße für irgendwelche Tipps. Hoffe das reicht so an Infos. Bei Google scheinen erstaunlich wenig Leute Probleme mit solchen "Datei Konflikten" zu haben, oder ich finde nicht die richtigen Suchbegriffe. Manchmal ist etwas von .profile die Rede, aber ich möchte ungern jedem, der das Teil kompilieren will zumuten, in Cygwin herumzupfuschen. Viele Grüße
Ich habe das date.exe aus dem Cygwin bzw. WinAVR einfach in unixdate.exe umbenannt und den Aufruf angeopasst BUILD_DATE = $(shell unixdate +'\"%y%m%d\"')
Danke für die schnelle Antwort. Wenn ichs umbenenne, mache ich mir ja die Cygwin Installation kaputt, da andere Tools unter Cygwin dann nicht mehr funktionieren. Ich könnte höchstens das Cygwin-date mit meinem Programm ausliefern... Es geht übrigens hierum: https://github.com/emsec/ChameleonMini/blob/master/Firmware/Chameleon-Mini/Makefile
Ich erinnere mich, ich habe eine Kopie angefertigt oder einen Link erzeugt.
Simon K. schrieb: > Wenn ichs umbenenne, mache ich mir ja > die Cygwin Installation kaputt, da andere Tools unter Cygwin dann nicht > mehr funktionieren. Kannst doch eine Kopie vom Cygwin-date machen und diese Kopie dann in unixdate umbenennen. Dann geht alles wie bisher und dein make funktioniert auch.
ich schrieb: > Simon K. schrieb: >> Wenn ichs umbenenne, mache ich mir ja >> die Cygwin Installation kaputt, da andere Tools unter Cygwin dann nicht >> mehr funktionieren. > > Kannst doch eine Kopie vom Cygwin-date machen und diese Kopie dann in > unixdate umbenennen. Dann geht alles wie bisher und dein make > funktioniert auch. Schon, es ist nur ärgerlich, wenn jemand erst an seiner Cygwin Installation herumfummeln muss um unser OpenSource Projekt zu kompilieren. Das kann doch nicht das Gelbe vom Ei sein :-(
Simon K. schrieb: > ich schrieb: >> Simon K. schrieb: >>> Wenn ichs umbenenne, mache ich mir ja >>> die Cygwin Installation kaputt, da andere Tools unter Cygwin dann nicht >>> mehr funktionieren. >> >> Kannst doch eine Kopie vom Cygwin-date machen und diese Kopie dann in >> unixdate umbenennen. Dann geht alles wie bisher und dein make >> funktioniert auch. > > Schon, es ist nur ärgerlich, wenn jemand erst an seiner Cygwin > Installation herumfummeln muss um unser OpenSource Projekt zu > kompilieren. Das kann doch nicht das Gelbe vom Ei sein :-( Das stimmt schon. Eine Möglichkeit wäre noch, das Windows-date umzubenennen, dann findet es "make" nicht mehr. Aber dann muß jeman anderes dann auch in seinem Windows rumpfuschen. Also auch keine Lösung. Kannst du nicht im makefile den Pfad zum cygwin/bin mit angeben beim Aufruf?
Bringt der gcc nicht eingebaute Makros mit, die dann zur Uhrzeit und Datum expandieren? __DATE oder sowas in der Richtung, hab jetzt nicht ins Manual gschaut, aber irgendwas gibts da.
So, hier ists: http://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html Ob du das so haben willst musst du wissen. Ich finds schöner und einfanger direkt die Build-Ins zu nutzen.
Ja, das ist soweit richtig. Ich hätte aber gerne das Datum als Zahl, damit ich das auch vergleichen kann. Als Ersatz für eine Versionsnummer praktisch. Leider gibt es keine defines für Jahr, Monat oder Tag, sondern man muss das Standard Format von _DATE_ nutzen.
date inkl. Pfad aufrufen? /usr/bin/date (CYGWIN_NT-6.1-WOW64 xxx 1.7.16(0.262/5/3) 2012-07-20 22:55 i686 Cygwin)
Evtl. ist dieser Link hilfreich: http://www.gnu.org/software/make/manual/html_node/Choosing-the-Shell.html#Choosing-the-Shell Lass dir mal den Wert von SHELL ausgeben.
Konrad S. schrieb: > Evtl. ist dieser Link hilfreich: > http://www.gnu.org/software/make/manual/html_node/... > > Lass dir mal den Wert von SHELL ausgeben. Klasse, das ist ja genau das, was ich suche? Anscheinend brauche ich im MAKEFILE nur die variable SHELL auf /bin/sh zeigen lassen? Vielen Dank! Ich werde das bei Gelegenheit mal ausprobieren und das MAKEFILE anpassen.
Habe jetzt etwas genauer untersucht und der Übeltäter ist, dass Atmel ihre AVR Toolchain (ex WinAVR) so umgebaut hat, dass "make" standardmäßig die Windows Konsole benutzt, was ich gewissermaßen besch.eiden finde, weil so viele Makefiles aus WinAVR Zeiten u.U. nicht mehr funktionieren könnten. Idealerweise liefert die AVR Toolchain dann auch keine weitere Shell mit (auch kein sh.exe). Meine Lösung ist, dass der Benutzer dann Cygwin installieren muss (für die sh Shell) und ich im Makefile ganz oben SHELL = /bin/sh eingefügt habe. Nun geht es wieder :-)
Simon K. schrieb: > Meine Lösung ist, dass der Benutzer dann Cygwin installieren muss (für > die sh Shell) Zwei Alternativen: http://win-bash.sourceforge.net/ http://www.mingw.org/wiki/MSYS
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.