Libtool版本控制依赖于其他库的库

时间:2010-04-17 11:30:30

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

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

我应该如何对库二进制接口(a.k.a. libtool -version-info)进行版本化?

当我进行各种更改时,跟踪库本身的更改没有任何问题。就这样 对我来说很明显我应该如何版本。

但是...

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

那么......我该怎么办? 我应该如何编辑库?

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

-version-info并没有直截了当地采用你编写的一些主要小修补程序版本(这是-release的用途),但必须遵守http://www.gnu.org/software/libtool/manual/html_node/Versioning.html中描述的编号方案(整章)。