2012-11-09 72 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