最佳实践:使用CMake对应用程序进行版本控制

5
我需要为我们正在开发的应用程序创建一个版本管理机制。
版本号需要按照以下格式:VERSION.RELEASE.MAINTENANCE.PATCH,这只是4个数字。CMake将生成一个包含这些数字的头文件,并将该文件包含在必要的位置以检索版本号。
但是,我的问题是:我应该把这四个数字存储在哪里?
我考虑存储在以下位置:
1. CMakeLists.txt - 易于维护但容易出现人为失误 2. CMake应从SVN代码库URL中解析出这些数字(我们使用SVN并有一种可接受的方式来强制执行项目的标签和分支名称) 3. 其他地方?
所以,这里是问题:
您能建议哪些最佳实践来实现此目标?
编辑(对LB的评论回答):
需要为主干版本(但不是任何修订版本,只需“顶部”)、已标记的版本和特殊开发分支进行构建。

你需要提供更多细节 - 是“动态版本控制”(即可以从主干的任何修订版本构建完整版本)还是“仅适用于发布版本”(即仅适用于特别标记的修订版本)。 - Lazy Badger
1个回答

1

从我的角度来看(我目前参与了几个基于CMake的(非大型)项目,并见过许多其他基于不同构建平台的项目):

  1. 对于大型生产项目,将版本号保留在代码内部(CMakeLists.txt,辅助文件等)是可取的。

对于这样的项目,由于有明确定义的业务流程,人为更改代码内部的版本号几乎是不可能的。

另一方面,源代码与存储库(SVN)分离。因此,您可以将源代码作为简单的归档文件交付。

  1. 对于小型项目或很难与存储库分离的项目,在CMake脚本中解析存储库数据是可以接受的。

在这种项目中,发布版本时人为失误更频繁,因此减少手动步骤的数量总是有意义的。

另一方面,在小型项目中,完全支持几种传递源文件的方式并不常见。仅支持通过SVN下载源文件即可。


如果需要解析存储库数据以获取版本号,则最好从该数据中具有文件级依赖的CMake脚本。否则,在源文件中仅具有标记的修订版本与先前版本不同的情况下,执行以下步骤后可能会出现错误的版本号:
  1. 克隆未标记的修订版本
  2. 配置(cmake
  3. 构建(make
  4. 更新为已标记的修订版本
  5. 构建
由于在第4步中没有更改任何CMake脚本依赖项,因此在第5步中构建将不涉及自动重新配置,因此版本号将不会重新生成。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接