我开发了一个 iOS 项目,它是一个处理不同服务器的类库。每个使用该库的应用程序只需要一台服务器。服务器类型可在编译时通过预处理器定义进行配置。
在我的库的 podspec 中,我为每个服务器定义了各种子规范,如下所示:
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
脚本的作用是将子规范中定义的所有标志合并为每个 pod-customerN.xcconfig 文件中的一个值
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) 3RD_PARTY_FLAGS $(inherited) ServerA=1 $(inherited) ServerB=1
有什么建议可以规避 Cocoapods 的这种错误(?)行为吗?据我了解文档,子规范属性应该只继承其父规范而不是同级子规范。