qt - Qt 项目中的版本号

标签 qt preprocessor version build-process

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

我正在使用 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 预处理器会失败。

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

最佳答案

我在我的构建系统中使用了这样的东西

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

关于qt - Qt 项目中的版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13317249/

相关文章:

java - 不支持的 major.minor 版本 52.0

c++ - Qt qrc 资源文件 - 无法加载图标

c++ - QT QstandardItem问题

qt - QML:等到动画完成

fortran - Fortran 中的断言

java - 面向对象语言(如 Java)中的嵌入式 SQL

c - 在子宏中替换父标记

Java : Working with multiple versions of XML Schemas

c++ - 来自 QML 的 Qt::QueuedConnection

java - 不支持的主要.次要版本 52.0