15

整个项目都需要版本号;在安装程序、代码、工具链等方面。我鄙视重复。我希望我的版本号存储在一个中央权威位置。

我正在使用 C/C++ 并在各种平台上使用 Qt。在 Qt 中,qmake 项目指定版本号,例如:

VERSION = 1.2.3

在代码中,我在 Version.h 之类的标头中使用了类似的东西:

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

我的安装程序工具链支持 C 预处理,因此我可以使用 Version.h 中指定的相同版本。但是,我不知道如何让 qmake 使用相同的版本号。我以为我可以预处理 pro 文件,但这不起作用,因为 # 字符意味着 pro 文件中的注释并且 C 预处理器会崩溃。

有人知道保持我的版本号集中的好方法吗?

4

2 回答 2

26

我在构建系统中使用了类似的东西

#.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 和其他宏用作普通宏。

于 2012-11-09T23:09:33.243 回答
4

如果您希望能够将您的版本号存储在 ac 头文件中,您可以这样做,然后将它们导入到项目文件中的 Qt 项目变量中。像下面这样的东西应该可以工作:

版本.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 编译项目的其他部分,则可以使用您的权威头文件。

于 2012-11-12T09:57:08.843 回答