2012-11-09 14 views
9

I numeri di versione sono necessari in tutto il progetto; in programmi di installazione, codice, toolchain ecc. Disprezzo la duplicazione. Voglio che i miei numeri di versione siano memorizzati in una posizione centrale autorevole.Numeri di versione in un progetto con Qt

Sto lavorando con C/C++ e utilizzo Qt su varie piattaforme. In Qt, progetti QMake specificare numeri di versione come:

VERSION = 1.2.3 

Nel codice che uso qualcosa di simile a un colpo di testa come version.h:

#define VERSION_MAJ 1 
#define VERSION_MIN 2 
#define VERSION_REV 3 
#define VERSION_STRING \"VERSION_MAJ\" "." \"VERSION_MIN\" "." \"VERSION_REV\" 

mio installatore toolchain ha il supporto per C pre-elaborazione modo da poter utilizzare la stessa versione specificata in Version.h. Tuttavia, non so come ottenere qmake per utilizzare lo stesso numero di versione. Ho pensato di poter preelaborare il file pro, ma questo non funzionerà come # caratteri significa un commento nei file pro e il preprocessore C cadrà.

Qualcuno sa di un buon modo per mantenere il mio numero di versione centralizzato?

risposta

2

Se si desidera essere in grado di memorizzare i numeri di versione in un file di intestazione c, è possibile farlo e quindi importarli nelle variabili di progetto Qt nel file di progetto. Qualcosa di simile al di sotto dovrebbe funzionare:

version.h:

#define MY_MAJOR_VERSION 3 
#define MY_MINOR_VERSION 1 

.pro

HEADERS += Version.h 

VERSION_MAJOR = MY_MAJOR_VERSION 
VERSION_MINOR = MY_MINOR_VERSION 

Il vantaggio di fare in questo modo tutto è che si può quindi utilizzare il file di intestazione autorevole se è necessario compilare altre parti del progetto lontano da Qt.

19

uso qualcosa come questo nel mio sistema di compilazione

#.pro file 
#Application version 
VERSION_MAJOR = 1 
VERSION_MINOR = 0 
VERSION_BUILD = 0 

DEFINES += "VERSION_MAJOR=$$VERSION_MAJOR"\ 
     "VERSION_MINOR=$$VERSION_MINOR"\ 
     "VERSION_BUILD=$$VERSION_BUILD" 

#Target version 
VERSION = $${VERSION_MAJOR}.$${VERSION_MINOR}.$${VERSION_BUILD} 

E dopo che è possibile utilizzare VERSION_MAJOR e altri come macro normale nell'applicazione.

+1

Come faccio ad esempio, utilizzare VERSION_MAJOR dal mio codice C? – oggmonster

+2

@oggmonster Allo stesso modo in cui si utilizzano altre macro nell'applicazione, ad esempio 'QString ("% 1.% 2.% 3 "). Arg (VERSION_MAJOR) .arg (VERSION_MINOR) .arg (VERSION_BUILD);' – MichK

Problemi correlati