Estou usando o CocoaPods no meu projeto do Xcode 4 e tenho três destinos para o meu projeto (o padrão, um para a construção de uma versão lite e outro para a construção de uma versão demo). Todos os destinos usam as mesmas bibliotecas, mas o CocoaPods está adicionando apenas a biblioteca estática e os caminhos de pesquisa ao destino principal. Meu podfile fica assim:
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'
A única maneira de fazer isso funcionar era especificar cada alvo individualmente com todos os pods listados novamente.
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
Existe uma maneira melhor de fazer isso?
Respostas:
CocoaPods 1.0 mudou a sintaxe para isso. Agora, fica assim:
ATUALIZADO Pre CocoaPods 1.0 resposta:
Sim, existe uma maneira melhor! Confira
link_with
onde você pode fazerlink_with 'MyApp', 'MyOtherApp'
para especificar vários destinos.Eu uso isso com testes de unidade como
link_with 'App', 'App-Tests'
(cuidado com os espaços nos nomes dos alvos).Exemplo:
2017 update
Você pode usar abstract_target
fonte
Eu acho que melhor solução é
Referência: http://natashatherobot.com/cocoapods-installing-same-pod-multiple-targets/
fonte
link_with
e upvote sua resposta :)Se você deseja que vários destinos compartilhem os mesmos pods, use um abstract_target.
ou apenas
fonte: https://guides.cocoapods.org/using/the-podfile.html
fonte
A maneira mais fácil é usar um destino abstrato, onde cada pod especificado será vinculado a todos os destinos.
fonte
realTarget
entrar e não sair dele?someNameForAbstractTarget