pods guide create xcode target cocoapods

xcode - guide - install pods in swift



¿Cómo especifico objetivos múltiples en mi podfile para mi proyecto de Xcode? (4)

Estoy usando CocoaPods con mi proyecto Xcode 4 y tengo tres objetivos para mi proyecto (el predeterminado, uno para construir una versión lite y uno para construir una versión demo). Todos los objetivos utilizan las mismas bibliotecas, pero CocoaPods solo está agregando la biblioteca estática y las rutas de búsqueda al objetivo principal. Mi podfile se ve así:

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''

La única forma en la que conseguí que esto funcionara fue especificar cada objetivo individualmente con todos los pods enumerados de nuevo.

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

¿Hay una mejor manera de hacer esto?


CocoaPods 1.0 ha cambiado la sintaxis para esto. Ahora se ve así:

def shared_pods pod ''SSKeychain'', ''~> 0.1.4'' pod ''INAppStoreWindow'', :head pod ''AFNetworking'', ''1.1.0'' pod ''Reachability'', ''~> 3.1.0'' pod ''KSADNTwitterFormatter'', ''~> 0.1.0'' pod ''MASShortcut'', ''~> 1.1'' pod ''MagicalRecord'', ''2.1'' pod ''MASPreferences'', ''~> 1.0'' end target ''Sail'' do shared_pods end target ''Sail-iOS'' do shared_pods end

OUTCATED Pre CocoaPods 1.0 respuesta:

Sí, hay una mejor manera! Consulte link_with donde puede hacer link_with ''MyApp'', ''MyOtherApp'' para especificar múltiples objetivos.

Lo uso con pruebas unitarias como link_with ''App'', ''App-Tests'' (cuidado con los espacios en los nombres del objetivo).

Ejemplo:

platform :osx, ''10.8'' link_with ''Sail'', ''Sail-Tests'' pod ''SSKeychain'', ''~> 0.1.4'' pod ''INAppStoreWindow'', :head pod ''AFNetworking'', ''1.1.0'' pod ''Reachability'', ''~> 3.1.0'' pod ''KSADNTwitterFormatter'', ''~> 0.1.0'' pod ''MASShortcut'', ''~> 1.1'' pod ''MagicalRecord'', ''2.1'' pod ''MASPreferences'', ''~> 1.0''

Actualización 2017

Puedes usar guides.cocoapods.org/syntax/podfile.html#abstract_target

# Note: There are no targets called "Shows" in any of this workspace''s Xcode projects abstract_target ''Shows'' do pod ''ShowsKit'' # The target ShowsiOS has its own copy of ShowsKit (inherited) + ShowWebAuth (added here) target ''ShowsiOS'' do pod ''ShowWebAuth'' end # The target ShowsTV has its own copy of ShowsKit (inherited) + ShowTVAuth (added here) target ''ShowsTV'' do pod ''ShowTVAuth'' end # Our tests target has its own copy of # our testing frameworks, and has access # to ShowsKit as well because it is # a child of the abstract target ''Shows'' target ''ShowsTests'' do inherit! :search_paths pod ''Specta'' pod ''Expecta'' end end



La forma más fácil es usar un objetivo abstracto, donde cada pod especificado se vinculará con todos los objetivos.

abstract_target ''someNameForAbstractTarget'' do pod ''podThatIsForAllTargets'' end target ''realTarget'' do pod ''podThatIsOnlyForThisTarget'' end


Si quieres que varios objetivos compartan los mismos pods, usa un abstract_target.

# There are no targets called "Shows" in any Xcode projects abstract_target ''Shows'' do pod ''ShowsKit'' pod ''Fabric'' # Has its own copy of ShowsKit + ShowWebAuth target ''ShowsiOS'' do pod ''ShowWebAuth'' end # Has its own copy of ShowsKit + ShowTVAuth target ''ShowsTV'' do pod ''ShowTVAuth'' end end

o solo

pod ''ShowsKit'' pod ''Fabric'' # Has its own copy of ShowsKit + ShowWebAuth target ''ShowsiOS'' do pod ''ShowWebAuth'' end # Has its own copy of ShowsKit + ShowTVAuth target ''ShowsTV'' do pod ''ShowTVAuth'' end

fuente: https://guides.cocoapods.org/using/the-podfile.html