2012-11-09 70 views
9

版本號在整個項目中都需要;在安裝程序,代碼,工具鏈等我鄙視重複。我希望我的版本號存儲在一箇中央權威位置。項目中的版本號與Qt

我正在使用C/C++並在各種平臺上使用Qt。

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

我安裝的工具鏈已經對C預處理支持,讓我可以使用:

VERSION = 1.2.3 

在代碼中,我像version.h中頭使用這樣的:在Qt,像QMAKE項目指定版本號與Version.h中指定的版本相同。但是,我不知道如何讓qmake使用相同的版本號。我以爲我可以預處理pro文件,但這不會起作用,因爲#字符在pro文件中意味着評論,並且C預處理器將會崩潰。

任何人都知道保持我的版本號集中的好方法嗎?

回答

2

如果您希望能夠將版本號存儲在c頭文件中,可以這樣做,然後將它們導入到項目文件中的Qt項目變量中。像下面的東西應該工作:

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 

做這樣一輪的好處是,你就可以使用你的權威的頭文件,如果你需要從Qt中編譯項目的其他部分。

19

我用這樣的事情在我的編譯系統

#.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} 

之後,你可以使用VERSION_MAJOR和其他人在你的應用程序正常宏。

+1

我如何從我的C代碼中使用VERSION_MAJOR? – oggmonster

+2

@oggmonster與在應用程序中使用其他宏一樣,例如'QString(「%1.%2.%3」)。arg(VERSION_MAJOR).arg(VERSION_MINOR).arg(VERSION_BUILD);' – MichK