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

Recommended way to manage versions in my c++ library

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

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

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

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

这让用户可以轻松查看版本号:

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

不过我会推荐:

  • 您 add/remove/deprecate 在您的库中的任何功能不应该要求用户以数字方式测试版本,而是您应该添加一个 #define and/or 一个方法来指定是否此选项是打开、关闭或可选的,例如:

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

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