我開發了一個iOS項目,它是一個處理不同服務器的類庫。每個使用該庫的應用程序只需要一臺服務器。服務器類型可以在編譯時通過預處理器定義進行配置。如何在Cocoapod子規格中定義不同的xcconfig參數?
在我的圖書館的podspec,我定義的各種subspecs像這樣每個服務器:
s.name = "ServerLib"
[...]
s.subspec 'ServerA' do |a|
a.source_files = 'Classes/A/**/*.{h,m}'
a.xcconfig = { "GCC_PREPROCESSOR_DEFINITIONS" => "$(inherited) ServerA=1" }
end
s.subspec 'ServerB' do |b|
b.source_files = 'Classes/B/**/*.{h,m}'
b.xcconfig = { "GCC_PREPROCESSOR_DEFINITIONS" => "$(inherited) ServerB=1" }
end
我的應用程序是一個多用戶的應用程序,每個客戶的一個目標。每個客戶都使用庫項目中的特定服務器。所以,我Podfile看起來是這樣的:
platform :ios, '5.0'
pod 'MyCore'
pod '3rdPartyLib'
target :'Customer1', :exclusive => true do
pod 'ServerLib/ServerA'
end
target :'Customer2', :exclusive => true do
pod 'ServerLib/ServerB'
end
什麼pod install
腳本執行,被合併在subspecs定義成一個值在每莢customerN.xcconfig所有的標誌文件
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) 3RD_PARTY_FLAGS $(inherited) ServerA=1 $(inherited) ServerB=1
任何建議如何爲了規避Cocoapods的這種錯誤(?)行爲?據我瞭解的文檔,subspec屬性應該只從其父級規格而不是同級子規格繼承。
你有沒有找到這個解決方案? – epologee 2013-08-27 17:04:46