如何拥有自动递增的构建版本号(KDevelop)?

Posted

技术标签:

【中文标题】如何拥有自动递增的构建版本号(KDevelop)?【英文标题】:How to have an auto incrementing build version number (KDevelop)? 【发布时间】:2017-07-05 14:13:57 【问题描述】:

如何在 KDevelop 中拥有一个自动递增的构建版本号?

我想为我在kdevelop 中的本地c++ 项目设置半自动版本控制。

类似:

int MajorVersion = 1;  // this manual 
int MinorVersion = 2;  // this manual
int Revision = 42;     // this automatically increased each time I compile

当我编译时,它会自动增加 Revision 字段。

此功能是否隐藏在设置中的某处,这些值是否可以从系统(主要是 Linux,但一般而言)访问,还是必须由用户实现?

请注意,我正在 kdevelop 中寻找解决方案,或者如果尚未允许使用可从命令行编译然后导入 KDevelop 的简单方法。 我不是在寻找 VisualStudio 的解决方案,因为许多答案都来自一些类似的问题 [1],[2]...

【问题讨论】:

这不是 IDE 的问题,而是正在使用的构建系统的问题。您使用的是哪个构建系统? @kfunk cmake。似乎 kdevelop 与 c++ 默认使用 CMake ......顺便说一句,我记得很多年前,在 Visual Studio 中,这是一个集成在 IDE 中的功能(在 VB6 的时候,即使我不记得是否是自我更新)。然后可以在可执行文件中挽救这些信息(右键单击,信息)......所以我认为现在可以在 kdevelop 中找到类似的功能。这个方向有什么标准吗? 【参考方案1】:

这与您使用的 IDE 无关。这是相当构建系统的事情。如果您使用的是 CMake,我想像这样:

if(NOT BUILD_REVISION)
  set(BUILD_REVISION 0 CACHE STRING "")
else()
  math(EXPR BUILD_REVISION "$BUILD_REVISION + 1")
endif()

add_definitions(-DBUILD_REVISION=$BUILD_REVISION)

然后在代码中

int Revision = BUILD_REVISION;

【讨论】:

感谢您的提示。我将尝试与 Kdevelop 一起使用。 注意:每当 BUILD_REVISION 更改时,这将重新编译您的所有代码——最好使用包含版本字符串的专用文件(我们称之为 version.h)。请参阅此操作方法:brianmilco.blogspot.de/2012/11/… -- 只需在需要的地方包含 version.h 即可

以上是关于如何拥有自动递增的构建版本号(KDevelop)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.Net MVC - 5 应用程序中显示版本号并自动递增

如何在 KDevelop 中开发共享库?

如何在 KDevelop 中为基于 automake 的项目添加自定义构建步骤?

XCode自动递增内部版本号脚本

GitVersion 使用描述符和自动递增版本号进行基于主干的开发

如何在 Latex 中添加自动版本号?