我有一个framework在核心应用程序及其界面中使用Boost和CgiCC。
我应该如何对库二进制接口(a.k.a. libtool -version-info
)进行版本化?
当我进行各种更改时,跟踪库本身的更改没有任何问题。就这样 对我来说很明显我应该如何版本。
但是...
Boost和CgiCC库都没有提供任何向后兼容的API / ABI,我的库可能与任意版本Boost和CgiCC链接,因此我无法提供有关接口的任何承诺,因此我无法真正指定{ {1}}因为即使是 针对不同版本的Boost和CgiCC编译的相同库将不兼容。
那么......我该怎么办? 我应该如何编辑库?
我知道我不应该首先依赖Boost和CgiCC接口,但这是我现有的稳定版本。这个问题在下一个主要版本中得到解决,但我仍然希望保持当前版本,因为它非常有价值。
答案 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中描述的编号方案(整章)。