ogg*_*ter 9 qt build-process preprocessor version
整个项目都需要版本号; 在安装程序,代码,工具链等.我鄙视重复.我希望我的版本号存储在一个中心权威位置.
我正在使用C/C++并在各种平台上使用Qt.在Qt中,qmake项目指定版本号,如:
VERSION = 1.2.3
Run Code Online (Sandbox Code Playgroud)
在代码中我使用像Version.h这样的标题:
#define VERSION_MAJ 1
#define VERSION_MIN 2
#define VERSION_REV 3
#define VERSION_STRING \"VERSION_MAJ\" "." \"VERSION_MIN\" "." \"VERSION_REV\"
Run Code Online (Sandbox Code Playgroud)
我的安装程序工具链支持C预处理,因此我可以使用Version.h中指定的相同版本.但是,我不知道如何让qmake使用相同的版本号.我以为我可以预处理专业文件,但这不起作用,因为#字符意味着在pro文件中的注释,C预处理器将会失败.
有人知道保持我的版本号集中的好方法吗?
Mic*_*chK 21
我在构建系统中使用这样的东西
#.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}
Run Code Online (Sandbox Code Playgroud)
之后,您可以在应用程序中使用VERSION_MAJOR和其他常规宏.
如果您希望能够将版本号存储在 ac 头文件中,您可以这样做,然后将它们导入到项目文件中的 Qt 项目变量中。像下面这样的东西应该有效:
版本.h:
#define MY_MAJOR_VERSION 3
#define MY_MINOR_VERSION 1
Run Code Online (Sandbox Code Playgroud)
.pro
HEADERS += Version.h
VERSION_MAJOR = MY_MAJOR_VERSION
VERSION_MINOR = MY_MINOR_VERSION
Run Code Online (Sandbox Code Playgroud)
这样做的好处是,如果您需要从 Qt 之外编译项目的其他部分,您可以使用权威的头文件。