Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Quattro modi di indossarlo, stessa app del Plaud Note Pro e integrazione con il desktop. Il registratore IA da indossare di Plaud eccelle in mobilità, ma resta vincolato all'abbonamento ed è facile da perdere
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Xiaomi ha portato Redmi Watch 6 anche sul mercato italiano, puntando su un display AMOLED da 2,07 pollici con picco di luminosità a 2000 nit, frame in alluminio da 9,9mm e un'autonomia dichiarata di 12 giorni. Lo smartwatch gira su HyperOS 3 e integra GPS, Bluetooth 5.4 e oltre 150 sport mode. Il tutto a meno di 100 euro
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Con 22 tasti, il pulsante 5D, lo Shift Mode e il sensore PixArt 3395 da 26.000 DPI, il nuovo mouse wireless di Mad Catz si rivolge in modo preciso ai giocatori di MMO e RPG. Ma chi conosce già il R.A.T. 8+ ADV si accorgerà subito di quanto i due prodotti condividano, e di dove invece divergono
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-06-2006, 10: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, 10: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, 10:46   #3
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 10: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, 11: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, 11:03   #6
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 11: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, 11: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, 11: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, 11: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, 11: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, 13:03   #12
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 13: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, 13:34   #14
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 13: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


Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC Radeon RX 9070 GRE, AMD la porta in tutto il mon...
Reolink OMVI 3i WiFi: videosorveglianza più intelligente e facile da usare Reolink OMVI 3i WiFi: videosorveglianza pi&ugrav...
Cavi sottomarini come sensori: la Finlan...
Exodus è il nuovo Mass Effect? Il...
Lockdown Mode cambia il volto di ChatGPT...
Guild Wars 3 è ufficiale: ArenaNe...
I giocatori voltano le spalle a Linux? L...
Instagram Plus arriva in Italia: cosa in...
XBOX: la nuova CEO non ha ancora le idee...
Intel non ha intenzione di abbandonare i...
La AI Mode sarà attiva di default...
Marvel's Wolverine non sarà un op...
Star Wars Zero Company esce ad agosto: n...
Bonus Decoder: fino al 70% di sconto con...
Virtua Fighter è tornato e non &e...
Il ritorno di Fumito Ueda, autore di Sha...
Cooler Master svela GPU Shield, la nuova...
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: 17:50.


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