0%

QT qmake实现版本号自动化升级 - 知乎

Excerpt

QT qmake实现版本号自动化升级 目标。 每次编译时版本号自动加 1。比如旧版本号是 1.0.0.1,升级后就是 1.0.0.2,1.0.0.3,….。当 版本号增加到 1.0.0.1000 时,升级为 1.0.1.1,依次类推。 pro文件代码: 配套…


QT qmake实现版本号自动化升级

目标。

每次编译时版本号自动加 1。比如旧版本号是 1.0.0.1,升级后就是 1.0.0.2,1.0.0.3,….。当 版本号增加到 1.0.0.1000 时,升级为 1.0.1.1,依次类推。

pro文件代码:

配套的版本数据文件butianyun_version.h.txt如下:

执行qmake时输入结果如下:


1
#引用:https://zhuanlan.zhihu.com/p/550295522 #定义版本自动升级函数 #butianyun_version.txt文件: #读取旧版本号,保存新版本号 #版本号格式类似:1.0.0.1 #返回值为升级后的版本号 defineReplace(butianyun_update_version) { OLD_VERSION = $$cat($$PWD/butianyun_version.txt, lines) VERSION_NUMBERS = $$split(OLD_VERSION, .) VA = $$take_first(VERSION_NUMBERS) VB = $$take_first(VERSION_NUMBERS) VC = $$take_first(VERSION_NUMBERS) VD = $$take_first(VERSION_NUMBERS) #如果没有读取到合适的版本号则自动初始化 #初始版本号为1.0.0.1 lessThan(VA, 1) { VA = 1 VOS += VA } lessThan(VB, 0) { VB = 0 VOS += VB } lessThan(VC, 0) { VC = 0 VOS += VC } lessThan(VD, 1) { VD = 1 VOS += VD } #如果配置的版本号有效则升级版本号 isEmpty(VOS) { VM = 1000 lessThan(VD, $$VM) { VD = $$num_add($$VD, 1) } else { VD = 1 lessThan(VC, $$VM) { VC = $$num_add($$VC, 1) } else { VC = 1 lessThan(VB, $$VM) { VB = $$num_add($$VB, 1) } else { VB = 1 VA = $$num_add($$VA, 1) } } } } S = . NEW_VERSION = $$VA$$S$$VB$$S$$VC$$S$$VD message($$OLD_VERSION => $$NEW_VERSION) #将升级后的版本号写入到文件中 BUTIANYUN_VERSION_H_TXT = $$cat($$PWD/butianyun_version.h.txt, blob) BUTIANYUN_VERSION_H = $$replace($$BUTIANYUN_VERSION_H_TXT, butianyun_version_number, $$NEW_VERSION) write_file($$PWD/butianyun_version.h, BUTIANYUN_VERSION_H) write_file($$PWD/butianyun_version.txt, NEW_VERSION) return ($$VERSION) } #调用版本号自动升级函数 !build_pass { VERSION = $$butianyun_update_version() }

如何学习C/C++/QT软件开发技术 - 知乎 (zhihu.com)

如果您认为这篇文章对您有所帮助,请您一定立即点赞+喜欢+收藏,本文作者将能从您的点赞+喜欢+收藏中获取到创作新的好文章的动力。如果您认为作者写的文章还有一些参考价值,您也可以关注这篇文章的作者。