2017-09-23 87 views
0

我正在写一个开源的c + +库,并希望管理其版本。例如:为每个版本添加标签,尚未发布的标签版本等。我希望下载预编译库的人员知道他们正在使用的版本,并可能同时管理多个版本的库。 这个库只能编译为静态库(而不是动态的)。 我没有使用cmake(我知道它支持版本标签)。 建议如何做到这一点? 我应该添加一个包含当前版本的H文件吗?它应该包括什么?也许还有其他想法?推荐的方法来管理我的c + +库中的版本

+1

https://help.github.com/articles/creating-releases/ –

+0

谢谢!但是这篇文章正在谈论图书馆之外的版本管理(在github上)。我感兴趣的是我可以在库中嵌入的东西,以便下载它的人可以查询版本 – fx23

+0

大多数项目只是在头文件中向#define中写入版本号。 –

回答

3

个人而言,我喜欢为我写的每个库添加一个配置头文件。 这使我的图书馆用户可以轻松了解可能的配置并根据需要进行调整。

关于版本管理,我通常会添加三个版本变量,该文件:

static const unsigned VERSION_MAJOR = x; 
static const unsigned VERSION_MINOR = y; 
static const unsigned VERSION_REVISION = z; 

这使得用户可以轻松地检查版本号:

  • 在下载库
  • 使用静态宏编译时
  • 运行期间动态运行

我会建议虽然那:

  • 任何特征添加/删除/弃用您的图书馆不应该要求用户数字测试版本,而是你应该添加一个#define和/或它指定该选项是否开启,关闭或可选的方法,如:

    #define AWESOME_LIBRARY_SUPPORTS_CACHING 
           -- OR/AND -- 
    static bool isCachingSupported() 
    
  • 你在你的库包含的任何代码应该使用正确的命名空间,以确保没有命名的碰撞,因为VERSION_MAJOR包裹是一个非常普遍的名字。

  • 您遵循适当的版本控制约定,如thesethese