|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
[UNIX] makefile: passare data di sistema al programma compilato ?
Devo compilare un programma C++ passandogli una define
della data della compilazione che corrispondera' alla versione. (parametro -DDATA=... per ex: cc pippo.c -DDATA=06/2006 -o pippo) in modo da aver sempre la versione aggiornata. C'e' qualcuno in grado di farlo ? (io lo avevo fatto 2 anni fa ma nun me ricordo proprio In altre parole devo: - assegnare ad una variabile (ex: DATA) la data di sistema (formattata mm/yyyy ma questo non e' un problema) - passare questa variabile al programma in fase di compilazione con l'opzione -D... se nel makefile metto: Codice:
... DATA="`date`" all: cc prova.c -DDATA=$(DATA) -o p ... Grazie! P.S.: lavoro su Sun ( e aggiungerei
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
DATA=$(shell date %Y%m%d)
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Codice:
DATA=$(shell date +%d/%m/%Y)
all:
gcc -o prova -DDATA=\"$(DATA)\" prova.c
P.S. comunque in ANSI "C" esiste già la macro __DATE__
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
e poi scusa ma $(...) e `...` sono la stessa cosa: esegui un comando se poi intendevi con "shell" la shell che uso .. le ho provate tutte Codice:
DATA=$(shell date %Y%m%d) all: echo $(DATA) cc -DDATA=$DATA -o p Codice:
output: echo cc prova.c -DDATA= -o p cmq grazie
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
o forse ho usato questo 2 anni fa ? (e qui posso rispondermi solo io cmq su Sun non va quello che m'hai inviato Grazie
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
DATA=$(shell date +%Y%m%d)
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
Comunque in effetti su un nostro client linux funziona. il problema di __DATE__ invece e' che ogni giorno cambia data non coincide con la data di compilazione ... ma possbile che Sun faccia sempre le cose a modo suo ?
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
e' quando vado ad eseguire nel make il cc ... DATA e' vuota Su linux: gcc -o prova -DDATA=$(DATA) prova.c output: gcc -o prova -DDATA=16/06/2006 prova.c funziona Su Sun: cc -o prova -DDATA=$(DATA) prova.c output: cc -o prova -DDATA= prova.c non funziona
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Bè devi vedere cosa cambia; innanzitutto se anche su Sun è presente "date" e con la stessa sintassi di linux; quindi potrebbe darsi che la sintassi del make di Sun sia diversa (nel qual caso ti consiglio di installare - se non lo è già - gmake della gnu, in modo da usare la stessa sintassi che usi per linux).
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
Codice:
DATA:sh = date +%d/%m/%Y all: cc -o prova -DDATA=$(DATA) prova.c P.S.: qua non si puo' installare niente (ufficialmente
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
info make invece fornisce tutto il manuale completo sul make e sui makefile! Il manuale del make è disponibile anche <qui> e <qui> spiega la funzione shell.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#13 | ||
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
info make SINTASSI: info -f file [ -v ] [ -S out_sep ] [ -s in_sep ] [ -0 campo_0 ] [ -1 campo_1 ] .... [ 0|1|2|3|4|5|6|7|8|9|10|11 ... ] invece ho letto bene il man di make e c'e' : :sh = Define the value of a macro to be the output of a com mand (see Command Substitutions below). il contrario ... ma tu info dove lo lanci ? linux ? ho provato anche li ma idem ... e comunque abbiamo una versione della Adamo&Eva & Co Quote:
(possiamo usare gmail e scaricarci l'impossibile ma gnu.org no )Comunque ormai ho risolto ... ma io mi chiedo ... come cacchio ho fatto 2 anni fa visto che __DATE__ non va bene e DATA_COMP:sh = date +%d/%m/%Y non l'ho usato senno' me lo ricorederei ? e non me lo sto sognando, ho controllato il main.cc e c'e' ancora l'istruzione: Codice:
#ifdef COMPILE_DATE strcat( Msg, COMPILE_DATE ); #else strcat( Msg, "02/2004" ); #endif
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
||
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
comunque e' 3 anni che sto qui e mi son fatto un'esperienza notevole su Unix ringrazio ancora, anche oggi s'e' imparato qualcosa
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:53.











)








