2010-04-17 70 views
4

我有一個framework,它在覈心應用程序和其接口中使用Boost和CgiCC。依賴其他庫的Libtool版本化庫

我應該如何版本庫二進制接口(a.k.a. libtool -version-info)?

當我進行各種更改時,我無法跟蹤庫本身中的更改。因爲它 對我來說很清楚我應該如何版本。

但是......

升壓和CgiCC庫不提供任何向後兼容的API/ABI和我的圖書館可以很隨意的版本升壓和CgiCC所以我不能提供有關接口的任何承諾鏈接,所以我不能指定-version-info,因爲即使是針對不同版本的Boost和CgiCC編譯的相同庫也是不兼容的。

那麼......我該怎麼辦? 我應該如何版本庫?

我知道我不應該首先依賴Boost和CgiCC接口,但這是我現有的穩定版本所得到的結果。這個問題在下一個主要發行版中得到解決,但我仍然希望保持最新發布,因爲它非常有價值。

回答

1

考慮採用一個版本控制方案,如:

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

如果暴露一個依賴庫API,可以通過你那麼你必須增加你的主版本號,如果在非後向兼容的方式依賴庫的API的變化。更好的策略是根本不暴露內部依賴庫。如果您確實需要公開某種類型的API,請將其包裝並抽象出不穩定的相關庫。

+0

1st。 APR更穩定,然後Boost發佈幾個月的不兼容版本。它也限制你到特定的版本。另外一個問題是,在ELF平臺下,不可能不公開依賴庫。即使你沒有在界面中使用它。 – Artyom 2010-04-17 13:19:41

1

-version-info並不直接採取一些主要的小補丁版本(這是-release的目的),但必須遵守http://www.gnu.org/software/libtool/manual/html_node/Versioning.html(整章)中所述的編號方案。

+0

一個很好的鏈接,供參考庫的版本管理(特別是在libtool)中的黑暗水域。 _murky waters_是我自己的描述,我相信其他人會發現它和飲用水一樣自然。 – 2016-11-04 15:22:05

相關問題