2011-07-05 81 views
0

我們的項目是一些編程語言的跨平臺開源實現。除了用該語言執行程序的命令行可執行文件外,它還提供了一個C++ API和庫,用戶可以使用它來添加自己的模塊。Mac OS X框架是否合適?

我試圖決定是否值得它(或者甚至是有意義的)爲Mac OS X提供我們的東西作爲框架(通過.pkg文件)。如果我們什麼都不做,那麼仍然存在該make install目標,將一切都投入到/usr/local/include/usr/local/lib

我們的實現需要一些第三方庫,例如,Xerces和ICU。可以/應該將這些庫的預構建版本視爲「資源」並捆綁在框架中?這是分發第三方庫的合法方式嗎?

回答

2

我喜歡框架,它們保持整潔。一個框架可以更容易地將你的庫用於Xcode,但它對於命令行的使用也很方便(-framework MyCoolLang)。然後,人們可以在不設置單獨的搜索路徑的情況下#include並使用您的頭文件。

這意味着您應該在其他平臺上放置標頭/usr/local/include/MyCoolLang/{foo,bar}.h,以便人們可以使用相同的相對包含路徑。無論如何,你應該這樣做,因爲它更整潔。

如果您必須支持包含沒有子目錄的路徑,例如#include和/或如果您希望在從命令行進行編譯時(作爲-framework的替代方法)支持傳統編譯器選項(如-lMyCoolLang),則可以使用符號鏈接頭文件和/或庫到/ usr/local/lib和include中。這比轉儲裏面的實際文件還要好,因爲有些人可以只用ls -l/usr/include並通過符號鏈接路徑精確地確定哪些頭文件屬於您的框架。

+0

那麼第三方庫呢? –

+0

你可以把它們放在'MyCoolLang.framework/Contents/Libraries'裏面。確保你的MyCoolLang庫使用'@ loader_path'引用它們(參見'man dyld')。 – LaC