【问题标题】:Libtool versioning of a library that depends on other libraries依赖于其他库的库的 Libtool 版本控制
【发布时间】:2010-04-17 11:30:29
【问题描述】:

我有一个framework,它在核心应用程序及其界面中使用了 Boost 和 CgiCC。

我应该如何对库二进制接口(又名 libtool -version-info)进行版本控制?

当我进行各种更改时,我可以毫无问题地跟踪库本身的更改。作为它 对我来说很清楚我应该如何版本。

但是……

Boost 和 CgiCC 库都不提供任何向后兼容的 API/ABI,而且我的库可能与 Boost 和 CgiCC 的任意版本链接,因此我无法提供有关接口的任何承诺,因此我无法真正指定 @ 987654323@ 因为即使是 针对不同版本的 Boost 和 CgiCC 编译的同一个库将不兼容。

那么……我该怎么办? 我应该如何对库进行版本控制?

我知道我不应该首先依赖 Boost 和 CgiCC 接口,但这是我迄今为止对现有稳定版本的了解。这个问题在下一个主要版本中得到解决,但我仍然拥有并希望保持当前版本,因为它非常有价值。

【问题讨论】:

    标签: c++ boost backwards-compatibility libtool versioninfo


    【解决方案1】:

    考虑采用如下版本控制方案:

    http://apr.apache.org/versioning.html

    如果您通过自己的 API 公开依赖库 API,那么如果依赖库的 API 以非向后兼容的方式更改,则必须增加主版本号。更好的策略是根本不公开内部依赖库。如果您确实需要公开某种 API,则将其包装并抽象掉不稳定的依赖库。

    【讨论】:

    • 第一。 APR 比几个月发布不兼容版本的 Boost 稳定得多。它还限制您使用特定版本。另一个问题是在 ELF 平台下完全不可能不暴露依赖库。即使你不在界面中使用它。
    【解决方案2】:

    -version-info 不会直截了当地采用您编写的一些主要-次要补丁版本(这就是 -release 的用途),但必须遵守 http://www.gnu.org/software/libtool/manual/html_node/Versioning.html(整章)中描述的编号方案。

    【讨论】:

    • 一个很好的链接,可以参考库版本控制的浑水(尤其是在 libtool 中)。 浑浊的水是我自己的描述,我相信其他人会觉得它和饮用水一样自然。
    猜你喜欢
    • 2011-08-15
    • 2018-04-09
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 2020-12-08
    相关资源
    最近更新 更多