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

时间:2015-10-12 09:26:09

标签: svn cmake versioning

我需要为我们正在开发的应用程序创建版本控制机制。

版本需要采用以下格式:VERSION.RELEASE.MAINTENANCE.PATCH。到目前为止,这只是4个数字。 CMake将生成带有这些数字的标题,此文件将包含在检索版本号所需的位置。

但是我的问题出现了:我应该在哪里存储这四个号码?

以下地方是我想存储它们:

  1. CMakeLists.txt - 易于维护但很容易遭受人为失败
  2. CMake应该从SVN存储库URL中解析出这些数字(我们使用SVN,并且有一种可接受的方式来强制执行项目的标记和分支名称)。
  3. 在其他地方?
  4. 所以,问题是:

    您可以为实现这一目标建议哪些最佳做法?

    编辑(回复LB的评论):

    主干版本需要构建(但不适用于任何版本,只有" top"),标记版本和特殊开发分支。

1 个答案:

答案 0 :(得分:1)

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

  1. 对于大型生产项目,维护代码内的版本(CMakeLists.txt,辅助文件等)是首选。
  2. 对于这样的项目,由于明确定义的业务流程,人们在代码中更改版本号几乎是不可能的。

    另一方面,源代码变为可与存储库(SVN)分离。因此,您可以提供源代码,例如,作为简单存档。

    1. 对于小型项目,或几乎不会从存储库中分离的项目,可以在CMake脚本中解析存储库数据。
    2. 在这样的项目中,发布版本中的人为失败更为频繁,因此减少手动步骤的数量总是有效。

      另一方面,在小型项目中,完全支持多种传递源文件的方法并不常见。只支持通过SVN下载源就足够了。

      如果要解析存储库数据以获取版本号,最好从该数据中获取CMake脚本的文件级依赖关系。否则,标记的修订版本与源文件中的前一版本不同,在这些步骤之后,您的版本号可能不正确:

      1. 克隆未标记的修订
      2. 配置它(cmake
      3. 构建它(make)。
      4. 更新为已标记的修订版。
      5. 构建它。
      6. 由于步骤4中没有更改CMake脚本依赖项,因此步骤5中的构建将不涉及自动重新配置,因此不会重新生成版本号。