Я разработал проект iOS, который представляет собой библиотеку классов, имеющую дело с разными серверами. Для каждого приложения, в котором используется библиотека, требуется только один сервер. Тип сервера настраивается с помощью определения препроцессора во время компиляции.Как определить отдельные параметры xcconfig в подпрограммах Cocoapod?
В 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
Любые предложения, как чтобы обойти это неправильное (?) поведение Кокоаподов? Насколько я понимаю документацию, свойства subspec должны унаследовать только от его родительских спецификаций, а не подпрограмм одного уровня.
Вы когда-нибудь находили решение этого вопроса? – epologee