可能的代碼針對系統/發行版提供的庫。這使得在該發行版上發佈產品變得最容易。
但是,如果你正在構建一個商業應用程序,因爲有這麼多的Linux發行版,這意味着你必須爲每個發行版維護大量不同的應用程序版本。這不一定是壞事,因爲這意味着你可以更乾淨地與發行版的包管理系統集成。
但是在不能這樣做的情況下,應該很容易下載每個第三方依賴關係的源代碼,並將該依賴關係的構建集成到與您的可執行文件鏈接的靜態庫中。這樣你就可以確切地知道你連接的是什麼,但是卻有膨脹你的可執行文件大小的缺點。如果您需要發行版未提供的特定庫(或版本),也可能需要此功能。
如果您希望您的代碼構建在各種不同的Unix系統上,那麼您可能會明智地考慮GNU autoconf和automake。這些幫助你爲你的項目構建一個configure
腳本和makefile
,這樣它就可以建立在任何Unix系統上。
另請參閱pkg-config,它現在在Linux發行版上使用很多,可以幫助您包含並鏈接到正確的庫(用於支持pkg-config的庫)。
如果你使用Subversion來管理你的來源有一個「慣例」,大多數顛覆倉庫用來管理他們自己的代碼和「供應商」的代碼。
大多數svn軟件倉庫都有一個「供應商」樹(隨樹幹一起分支,樹枝分支&)。這是所有第三方供應商代碼的首選。在該目錄中,您使用了每個庫的目錄。例如:
branches/
tags/
trunk/
vendor/somelib
vendor/anotherlib
下面的每個這些庫的是每個庫的版本和最先進的最新版本在你的倉庫「當前」目錄的目錄。在這裏
libs目錄應該
主幹/來源#所有的代碼在這裏 主幹/林達#所有供應商代碼:
vendor/somelib/1.0
vendor/somelib/1.1
vendor/somelib/current
那麼你的項目的樹應當設置是這樣的爲空,但它必須與它相關svn:externals
元數據,通過:
svn propedit svn:externals trunk/libs
此屬性的內容是一些沿線的東西(假設顛覆1.5):
^/vendor/somelib/current somelib
^/vendor/anotherlib/1.0 anotherlib
這意味着,當你結帳代碼顛覆還檢查出你的供應商庫到你的軀幹/ libs目錄。所以,當檢查了它看起來像這樣:
trunk/source
trunk/libs/somelib
trunk/libs/anotherlib
這在Subversion Book描述(可能是好多了)。特別是關於處理vendor branches和externals的部分。
來源
2008-10-22 09:15:49
orj