2013-08-29 4 views
14

저는 iOS 앱으로 몇 주 동안 CocoaPod를 사용 해왔고 테스트 한 대상 (완벽하게 "MainApp"이라고 부름)과 완벽하게 작동합니다. 그러나 이제 다른 대상 ("MyAppLite")을 빌드하고 빌드가 실패했음을 알았습니다 (파일이 포드의 헤더 파일 중 하나에서 발견되지 않음). 다음과 같이 내가 발견 한 빌드 설정에서모든 타겟과 포드 통합하기

의 차이점은 다음과 같습니다

  • 다른 링커 플래그 MyAppLite
  • 프레임 워크에 필요한 프레임 워크를 포함하지 않는/헤더/라이브러리 검색 경로는 모든 MyAppLite에서 비어 있습니다 MainApp에서 사용자 정의 빌드 설정의
  • 없음 어떻게 보장 할 수 MyAppLite

에 존재하지 않는 것을 나는 pod install, 모든 타를 실행할 때 도서관에 링크가 있니? 워드 프로세서

platform :ios, '5.0' 

pod 'TTTAttributedLabel', '~> 1.7.0' 
pod 'iRate', '~> 1.7.5' 
pod 'MBProgressHUD', '~> 0.6' 
pod 'FlurrySDK', '~> 4.2.3' 
pod 'ACSimpleKeychain', '~> 0.0.1' 
pod 'WEPopover', '~> 0.0.1' 
pod 'AFNetworking', '~> 1.3.1' 
pod 'Nimbus', '~> 1.0.0' 
pod 'QuincyKit', '~> 2.1.9' 
+0

Cocoapods 1.0.0 호환성을 위해 http://stackoverflow.com/a/34905278/1033581를 참조하십시오. –

답변

13

다른 종속 구성을 필요로하는 경우

또한 당신이 libPods.a을 생산합니다 link_with 지시

platform :ios, '5.0' 

pod 'TTTAttributedLabel', '~> 1.7.0' 
pod 'iRate', '~> 1.7.5' 
pod 'MBProgressHUD', '~> 0.6' 
pod 'FlurrySDK', '~> 4.2.3' 
pod 'ACSimpleKeychain', '~> 0.0.1' 
pod 'WEPopover', '~> 0.0.1' 
pod 'AFNetworking', '~> 1.3.1' 
pod 'Nimbus', '~> 1.0.0' 
pod 'QuincyKit', '~> 2.1.9' 

link_with "MyApp" 
link_with "MyAppLite" 

를 사용할 수있는 Cocoapods 설명서에 Multiple Targets을보고는 Target1Target1에 연결됩니다 . 관련 documentation

: 자동으로 프로젝트로 podfile의 모든 대상을 연결 cocoapods

  • 참고. 이러한 이유로 대상의 이름이 일치해야합니다. 부모가 다른 플랫폼이있는 경우, 배타적

    target :test, :exclusive => true do 
        link_with 'MyAppTests' 
    end 
    
  • 대상, 기본적으로 : 어떤 이유로 다른 이름으로 podfile에서 대상을 지정하려면, 당신은 link_with 속성을 설정할 수 있습니다.

  • 팟 파일의 주 대상은 항상 최종 프로젝트의 첫 번째 대상과 연결됩니다. DEVS에서 추천 abstract_target (그러나 0.39.0와 호환되지 않음)를 사용 CocoaPods 1.0.0 용

+2

이것은 본질적으로 내가 한 일이지만 모든 포드를 포함하는 명시 적 타겟을 정의하고 그 뒤에 포드 목록 앞에 link_with [ 'MyApp', 'MyAppLite']'줄을 추가해야했습니다. – colincameron

+0

왜 그렇게해야하는지 질문 할 수 있습니까? –

+0

잘 모르겠지만 달리 작동하지 않습니다. – colincameron

2

:

명시 적으로 대상을 지정하지 않으면, 포드 대상이 프로젝트의 첫 번째 대상과 연결됩니다 참고로

, 여기 내 Podfile입니다.

link_with을 사용하여 추가 대상을 연결할 수 있습니다. 당신이 다른 표적

+0

빌드 설정은'pod install'을 사용하여 자동으로 설정됩니다. - 자동으로 올바르게 생성되어야하는 것들을 수동으로 시작하고 싶지는 않습니다 .- 코코아 포드의 모든 부분이 아닌가요? – colincameron

+0

또한 모든 대상에 대해 정확히 동일한 종속성을 설정하려고합니다. – colincameron

+0

확인. 나는 대답을 업데이트했다. 희망이 도움이됩니다. – serrrgi

24

: CocoaPods 0.39.0 + 1.0

platform :ios, '5.0' 

abstract_target 'defaults' do 
    pod 'TTTAttributedLabel', '~> 1.7.0' 
    pod 'iRate', '~> 1.7.5' 
    pod 'MBProgressHUD', '~> 0.6' 
    pod 'FlurrySDK', '~> 4.2.3' 
    pod 'ACSimpleKeychain', '~> 0.0.1' 
    pod 'WEPopover', '~> 0.0.1' 
    pod 'AFNetworking', '~> 1.3.1' 
    pod 'Nimbus', '~> 1.0.0' 
    pod 'QuincyKit', '~> 2.1.9' 

    target 'MyApp' 
    target 'MyAppLite' 
end 

.0 호환성, def를 사용하여 잘 작동 (그러나 DEVS 권장하지 않음) :

platform :ios, '5.0' 

def default_pods 
    pod 'TTTAttributedLabel', '~> 1.7.0' 
    pod 'iRate', '~> 1.7.5' 
    pod 'MBProgressHUD', '~> 0.6' 
    pod 'FlurrySDK', '~> 4.2.3' 
    pod 'ACSimpleKeychain', '~> 0.0.1' 
    pod 'WEPopover', '~> 0.0.1' 
    pod 'AFNetworking', '~> 1.3.1' 
    pod 'Nimbus', '~> 1.0.0' 
    pod 'QuincyKit', '~> 2.1.9' 
end 

target 'MyApp' do 
    default_pods 
end 

target 'MyAppLite' do 
    default_pods 
end