使用Qt的项目中的版本号

使用Qt的项目中的版本号,qt,preprocessor,version,build-process,Qt,Preprocessor,Version,Build Process,整个项目都需要版本号;在安装程序、代码、工具链等方面,我鄙视重复。我希望我的版本号存储在一个中央权威位置 我正在使用C/C++并在各种平台上使用Qt。在Qt中,qmake项目指定的版本号如下: VERSION = 1.2.3 在代码中,我使用了类似于头的版本。h: #define VERSION_MAJ 1 #define VERSION_MIN 2 #define VERSION_REV 3 #define VERSION_STRING \"VERSION_MAJ\" "." \"VERSI

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

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

VERSION = 1.2.3
在代码中,我使用了类似于头的版本。h:

#define VERSION_MAJ 1
#define VERSION_MIN 2
#define VERSION_REV 3
#define VERSION_STRING \"VERSION_MAJ\" "." \"VERSION_MIN\" "." \"VERSION_REV\"
#define MY_MAJOR_VERSION 3
#define MY_MINOR_VERSION 1
我的安装工具链支持C预处理,因此我可以使用version.h中指定的相同版本。但是,我不知道如何让qmake使用相同的版本号。我以为我可以预处理pro文件,但那不行,因为#字符意味着pro文件中的注释,而C预处理器将崩溃


有谁知道一个好方法来集中我的版本号吗?

我在构建系统中使用类似的方法

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

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

h版:

#define VERSION_MAJ 1
#define VERSION_MIN 2
#define VERSION_REV 3
#define VERSION_STRING \"VERSION_MAJ\" "." \"VERSION_MIN\" "." \"VERSION_REV\"
#define MY_MAJOR_VERSION 3
#define MY_MINOR_VERSION 1
专业人士


这样做的好处是,如果需要从Qt编译项目的其他部分,那么可以使用权威头文件。

@oggmonster与在应用程序中使用其他宏的方式相同,例如
QString(“%1.%2.%3”).arg(VERSION_MAJOR).arg(VERSION_MINOR).arg(VERSION_BUILD)太棒了!非常感谢。现在,有没有办法将此版本放入.app文件的“info.plist”组件中?@MichK谢谢。如何使这个版本号出现在编译的应用程序bin/elf文件中(在linux中)?好主意。但要将它们组合在一起,需要一些标记化魔法。这实际上不起作用--.pro文件中没有
MY_X_VERSION
,即使将.h版本添加到头文件中(
qmake
不读取头文件并将
\defines
转换为qmake变量)