본문 바로가기
Xcode/IOS

IOS) 하나의 Podfile에 여러개의 프로젝트에 의존성 추가하기

by 후르륵짭짭 2023. 8. 5.
728x90
반응형

하늘 위에서 찍은 여의도

 

안녕하세요. 후르륵짭짭입니다.

최근에는 날씨가 너무 덥네요. 정말로요...

너무 더워서 출근을 자동차로 안하면 살이 튀겨지더라구요.

덕분에 운전실력도 많이 늘었습니다. 

얼릉 9월이 왔으면 좋겠습니다.

 

최근에 사내 프로젝트를 진행하면서 저희 프로젝트 구조를 변경해야 했습니다.

기존에는 하나의 프로젝트에 폴더로 여러 기능을 나눴더라면 

이젠 각 기능을 프로젝트로 나누고 하나의 핵심 프로젝트가 가지고 있는 형태로요.

그러면서 필요했던게 하나의 Podfile에 여러 프로젝트의 의존성을 추가하고 싶었습니다.

 

** 프로젝트 구조와 Pod 적용 **

 

  MainFramework  
SubFramework_A   SubFramework_B
  CoreFramework  
RxSwift Moya Realm

프로젝트 구조를 위와 같이 총 3개의 층으로 나눴습니다.

MainFramework에서 SubFramework들을 가지고 있고 

각 SubFramework도 CoreFramework를 가지고 있는 형태 입니다.

그리고 3rdPary 라이브러리를 Dynamic Framework로 가지고 있게요.

그래서 MainFramework Pod에서 여러개의 프로젝트에 의존성을 주입하고 싶었습니다.

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

use_frameworks!

workspace 'MainFramework'
project './MainFramework.xcodeproj'

def subFramework_A_DependencyPod
  pod 'RxSwift'
end

def subFramework_B_DependencyPod
  pod 'Moya'
end

def main_DependencyPod
  subFramework_A_DependencyPod
  subFramework_B_DependencyPod
end

target 'MainFramework' do
  # MainFramework에 필요한 종속성 추가
  project './MainFramework.xcodeproj'
  main_DependencyPod
end

project './SubFramework_A/SubFramework_A.xcodeproj'

target 'SubFramework_A' do
  project './SubFramework_A/SubFramework_A.xcodeproj'
  subFramework_A_DependencyPod

  target 'SubFramework_A_TestApp' do
    inherit! :search_paths
  end
end

여기서 중요한 것은 하나의 Podfile에서 여러개의 프로젝트의 의존성을 관리해야하기 때문에,

일단 어느 워크스페이스에서 작업할지 알려줘야합니다.

아래와 같이 한다면 해당 Target이 workspace에 추가가 됩니다.

workspace 'MainFramework'

 

그리고 해당 프로젝트가 어디에 있는지 알려줘야하기 때문에

project './SubFramework_A/SubFramework_A.xcodeproj'

target 'SubFramework_A' do
  project './SubFramework_A/SubFramework_A.xcodeproj'
  subFramework_A_DependencyPod

  target 'SubFramework_A_TestApp' do
    inherit! :search_paths
  end
end

위와 같이 project 다음에 path를 넣어주고 target 안에도 project path를 넣어줍니다.

이렇게 되면 이제 하나의 Podfile에 여러 프로젝트의 의존성을 관리할 수 있게 됩니다.

728x90
반응형

댓글