管理 C++ 库中版本的推荐方法

fx2*_*x23 3 c++ versioning

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

Dan*_*man 8

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

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

static const unsigned VERSION_MAJOR = x;
static const unsigned VERSION_MINOR = y;
static const unsigned VERSION_REVISION = z;
Run Code Online (Sandbox Code Playgroud)

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

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

但我建议:

  • 您在库中添加/删除/弃用的任何功能不应要求用户以数字方式测试版本,而是您应该添加 #define 和/或指定此选项是打开、关闭还是可选的方法,例如:

    #define AWESOME_LIBRARY_SUPPORTS_CACHING
                   -- OR/AND --
    static bool isCachingSupported()
    
    Run Code Online (Sandbox Code Playgroud)
  • 库中包含的任何代码都应使用适当的名称空间进行包装,以确保不存在命名冲突,因为 VERSION_MAJOR 是一个非常通用的名称。

  • 您遵循正确的版本控制约定,例如这些这些