软件版本号插入

Posted

技术标签:

【中文标题】软件版本号插入【英文标题】:Software version number insertion 【发布时间】:2020-08-31 22:23:35 【问题描述】:

我一直在想一种方法,如何将Major.minor.build形式的到源代码中,而无需手动修改源代码。

我有一个想法,版本号的所有部分都将来自 来自版本控制软件的信息(在我的例子中是 Mercurial)。 专业minor 将自动填充标签的编号(M.m),build 将填充 修订号。就是这个想法。

就实现而言,我认为我可以编写一个由某个钩子触发的脚本 (可能是 pretag 钩子)。这个脚本的目标是创建一个 C 语言头文件 具有以下内容的文件(例如Version.h

#define MAJOR   M 
#define MINOR   m
#define BUILD   b

Version.h 标头将包含在负责软件版本号的模块中 发布(在我的情况下,通过在通信表中填写几条记录)。实际上 将软件版本号填写到源代码中,这将是必要的 step - 编译,其中链接器确保上述符号的扩展 常数。

每当我发布新软件时,我都会先创建一个标签(分配实际数字 到上面的符号常数)。然后我运行编译过程,将之前检索到的数字推送到源代码中的正确位置。

您认为建议的方法可用吗?感谢您的任何建议。

【问题讨论】:

【参考方案1】:
    您可以(理论上)从非标记提交构建(否则您的树将被标记淹没) 适合您的型号 0.8.1618(尾随 rev)看起来不错,但考虑一下可能的历史重写(即使在同一个仓库中也可以更改本地版本) 0.8.229f43b67c2a(尾随node|short)不利于眼睛,但在大多数情况下适合历史探索 我认为,您可以根据article in Mercurial wiki 的想法和我的建议,对您的构建链进行(可能)小幅修正: 在标签中写完整版(mayor.minor.build) 将与最后一个标签的距离写入补丁(以提高可读性)

我有完整版作为标签,使用自己的模板别名

semver = "latesttagifeq(latesttagdistance,0,'','+latesttagdistance')"

用于构建可用且易于理解的版本字符串,而不是 wiki 中建议的平原 node|short,因此,我当前的 nice tip 显示为 0.8.13+38

HTH

【讨论】:

以上是关于软件版本号插入的主要内容,如果未能解决你的问题,请参考以下文章

c语言获取最大软件版本号

apktool 修改软件版本号,求助

软件版本号命名规则

软件版本号命名规则

怎样能修改安卓软件的版本号?

vb如何读取系统已安装软件并获取软件版本号