由於您的目標是OSX,因此解決您的問題的方法是將Lumberjack作爲框架(而不是鏈接A和B模塊中的源代碼),然後在需要的地方使用該框架(即任何項目使用A或B模塊)。
事實上,Lumberjack已經包含了一個建立Lumberjack.framework的項目,請檢查:CocoaLumberjack/Xcode/LumberjackFramework/Desktop/Lumberjack.xcodeproj
。
詳細闡述了這一點,您可以像現在這樣定義您的A和B模塊,但不會丟棄伐木工人的源代碼。相反,當你想要在可執行文件(比如測試目標)中使用靜態庫時,你需要將庫添加到目標以及lumberjack框架中(就像你使用OSX SDK框架一樣)。
如果需要,添加動態框架只是「刪除源」的一種不同方式,但要正確完成。
當你想使用都 A和B在C項目,添加靜態庫和你的伐木工人框架下
正如你所看到的,這樣做的這種方式將遵守所有四個要求,代價是引入一個依賴項:您需要在靜態庫文檔中明確說明它們依賴於伐木工人框架。這實際上不是一個大問題,因爲後者在自己的項目中可用,任何人都可以自己構建。
如果你想改善對這個依賴關係的處理,cocoapods就是要走的路(cocoapod是一個與你的庫相關的文件,它描述了它的依賴關係,所以當你安裝你的庫時,cocoapods系統會自動安裝也依賴)。但是這是非常可選的。一個單一的依賴並不是要記錄或遵守的大問題。
希望這回答你的問題。
這聽起來是難治與目標c命名空間。 [http://stackoverflow.com/questions/15539041/how-does-one-use-namespaces-in-ios-objective-c-code][1] [1]: http://stackoverflow.com/questions/15539041/how-does-one-use-namespaces-in-ios-objective-c-code –
只要是明確的,與這兩個A''和'B'參考伐木工人符號完全相同的功能,正確嗎?或者它們是否引用了具有不同功能的不同類似名稱的符號? –
「A」和「B」都引用完全相同的第三方庫(伐木工人)。因此,不管怎樣,我都必須讓他們以一種獨立編譯的方式共享該庫。我希望這是有道理的。 – DrummerB