Я использую CocoaPods с моим проектом Xcode 4, и у меня есть три цели для моего проекта (по умолчанию, одна для создания облегченной версии и одна для создания демонстрационной версии). Все цели используют одни и те же библиотеки, но CocoaPods только добавляет статическую библиотеку и пути поиска к основной цели. Мой подфайл выглядит так:
platform :ios, '5.0'
pod 'TestFlightSDK', '>= 1.1'
pod 'MBProgressHUD', '0.5'
pod 'iRate', '>= 1.6.2'
pod 'TimesSquare', '1.0.1'
pod 'AFNetworking', '1.1.0'
pod 'KKPasscodeLock', '0.1.5'
pod 'iCarousel', '1.7.4'
Единственный способ заставить меня работать с этим состоял в том, чтобы указать каждую цель отдельно со всеми перечисленными модулями.
platform :ios, '5.0'
target :default do
pod 'TestFlightSDK', '>= 1.1'
pod 'MBProgressHUD', '0.5'
pod 'iRate', '>= 1.6.2'
pod 'TimesSquare', '1.0.1'
pod 'AFNetworking', '1.1.0'
pod 'KKPasscodeLock', '0.1.5'
pod 'iCarousel', '1.7.4'
end
target :lite do
link_with 'app-lite'
pod 'TestFlightSDK', '>= 1.1'
pod 'MBProgressHUD', '0.5'
pod 'iRate', '>= 1.6.2'
pod 'TimesSquare', '1.0.1'
pod 'AFNetworking', '1.1.0'
pod 'KKPasscodeLock', '0.1.5'
pod 'iCarousel', '1.7.4'
end
target :demo do
link_with 'app-demo'
pod 'TestFlightSDK', '>= 1.1'
pod 'MBProgressHUD', '0.5'
pod 'iRate', '>= 1.6.2'
pod 'TimesSquare', '1.0.1'
pod 'AFNetworking', '1.1.0'
pod 'KKPasscodeLock', '0.1.5'
pod 'iCarousel', '1.7.4'
end
Есть лучший способ сделать это?
Ответы:
CocoaPods 1.0 изменил синтаксис для этого. Теперь это выглядит так:
УСТАРЕЛО Pre CocoaPods 1.0 ответ:
Да, есть лучший способ! Проверьте,
link_with
где вы можетеlink_with 'MyApp', 'MyOtherApp'
указать несколько целей.Я использую это с подобными тестами
link_with 'App', 'App-Tests'
(остерегайтесь пробелов в именах целей).Пример:
Обновление 2017
Вы можете использовать abstract_target
источник
Я думаю, что лучшее решение
Ссылка от: http://natashatherobot.com/cocoapods-install-same-pod-multiple-targets/
источник
link_with
работают и т. Д.) Это также может помочь людям увидеть проблему и ответить на ваш ответ :)Если вы хотите, чтобы несколько целей использовали одни и те же модули, используйте abstract_target.
или просто
источник: https://guides.cocoapods.org/using/the-podfile.html
источник
Самый простой способ - использовать абстрактную цель, где каждый указанный модуль будет связан со всеми целями.
источник
realTarget
идти внутрь,someNameForAbstractTarget
а не снаружи?