Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-06-2006, 11:26   #1
trallallero
Senior Member
 
L'Avatar di trallallero
 
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
...
non va (mi esce: cc prova.c -DDATA="`date`" -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
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 11:37   #2
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
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
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 11:46   #3
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da trallallero
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.
Ho fatto adesso una prova su Linux:
Codice:
DATA=$(shell date +%d/%m/%Y)

all:
    gcc -o prova -DDATA=\"$(DATA)\" prova.c
Non so se va bene sulla Sun.

P.S. comunque in ANSI "C" esiste già la macro __DATE__
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 11:55   #4
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da ilsensine
DATA=$(shell date %Y%m%d)
grazie ma non va lo stesso

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
come vedi DATA rimane blank

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
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 12:00   #5
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da andbin
Ho fatto adesso una prova su Linux:
Codice:
DATA=$(shell date +%d/%m/%Y)

all:
    gcc -o prova -DDATA=\"$(DATA)\" prova.c
Non so se va bene sulla Sun.

P.S. comunque in ANSI "C" esiste già la macro __DATE__
'azz e' vero! __LINE__, __DATE__ etc
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
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 12:03   #6
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da trallallero
e poi scusa ma $(...) e `...` sono la stessa cosa: esegui un comando
Sì è la stessa cosa nelle shell ... ma non in un makefile! In un makefile devi usare l'apposita funzione: $(shell ...comandi...)
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 12:07   #7
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da trallallero
grazie ma non va lo stesso
Mi sono scordato il "+":

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
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 12:11   #8
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da andbin
Sì è la stessa cosa nelle shell ... ma non in un makefile! In un makefile devi usare l'apposita funzione: $(shell ...comandi...)
questo il man di make non lo dice

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
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 12:19   #9
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da ilsensine
Mi sono scordato il "+":

DATA=$(shell date +%Y%m%d)
ma il problema non e' la formattazione della data.

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
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 12:25   #10
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
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
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 12:32   #11
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da ilsensine
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).
Infatti e' diversa la sintassi, trovata sul sito della Sun:

Codice:
DATA:sh = date +%d/%m/%Y

all:
	cc -o prova -DDATA=$(DATA) prova.c
comunque grazie a tutti

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
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 14:03   #12
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da trallallero
questo il man di make non lo dice
man make fornisce solo le informazioni sul comando make: descrizione, opzioni, ecc...
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%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 14:23   #13
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da andbin
man make fornisce solo le informazioni sul comando make: descrizione, opzioni, ecc...
info make invece fornisce tutto il manuale completo sul make e sui makefile!
no guarda, qui e' tutto strano, siamo in un mondo a parte

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:
Originariamente inviato da andbin
Il manuale del make è disponibile anche <qui> e <qui> spiega la funzione shell.
Grazie andbin ma su gnu.org non ci si puo' andare da qui
(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
boh le vie dell'informatica sono infinite
__________________
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
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 14:34   #14
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da trallallero
no guarda, qui e' tutto strano, siamo in un mondo a parte
Ehhh ... questo lo immaginavo. Penso che ci siano parecchie differenze tra Linux e Solaris. Io però non ho mai avuto modo di lavorare con quest'ultimo, quindi ... non saprei dirti di più.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 14:51   #15
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da andbin
Ehhh ... questo lo immaginavo. Penso che ci siano parecchie differenze tra Linux e Solaris. Io però non ho mai avuto modo di lavorare con quest'ultimo, quindi ... non saprei dirti di più.
piano piano la banca sta mollando queste dannate Sparc per passare a Linux ,,, certe filiali hanno ormai solo clients Linux ... anche perche' le Sparc costano un fottio di $

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
trallallero è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Missione Artemis II diretta verso la Lun...
Toy Story 5 arriva al cinema: è l...
Intel cambia rotta su Linux? Nuove assun...
Samsung aggiorna Bixby con One UI 8.5: p...
L'Etiopia vieta le auto a combustione: a...
Pirateria audiovisiva: la Guardia di Fin...
Ubisoft conferma due nuovi Far Cry in sv...
Chi vincerà il Festival di Sanrem...
G42 e Cerebras portano in India un super...
Offerte aggiornate del weekend Amazon: 7...
4 MacBook Air in offerta e scende a 939€...
Chrome cambia il tuo modo di lavorare: o...
Minimo storico iPhone 17 su Amazon: 909€...
USA, incriminati tre ingegneri della Sil...
Xbox: Phil Spencer lascia dopo 38 anni, ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 19:53.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v