의존성 관리 도구 알아보기 (SPM, CocoaPod, Carthage)

728x90

의존성 관리도구가 하는 일

프로젝트에 외부 라이브러리를 쉽게 관리할 수 있게 도와주는 도구!

라이브러리 설치, 버전관리, 업데이트 관리, 빌드 통합 등을 도와주는 도구다.

 

iOS에서는 대표적으로 3가지 의존성 관리 도구가 있다.

  1. SPM(Swift Package Manager) - First party, git기반, 요즘에는 대부분 라이브러리가 SPM도 지원함
  2. CocoaPod - third party, obj-c 시절부터 인기있었음, Ruby 기반
  3. Carthage - third party

각각의 장단점을 알아보자

SPM (Swift Package Manager)

장점

Xcode 내장(first party도구)이 되어있어 프로젝트에 쉽게 라이브러리를 추가하고 관리할 수 있다.

처음 나왔을때는 지원하는 라이브러리가 적었지만 지금은 신경안써도 될 정도로 많이 지원하고 있음.

Git 기반으로 외부 스크립트에 의존이 없음

 

단점

obj-c 시절 레거시 라이브러리는 지원이 미비함..

CocoaPod 

장점

obj-c 시절부터 유명한 도구기 때문에 거의 모든 라이브러리가 지원하고있음

프로젝트에 라이브러리를 가져오고 빌드 설정을 자동으로 해주기때문에 편리하다.

 

단점

업데이트나 프로젝트에 install시 속도가 느리다.

다른 pod file간 충돌 또는 workspace가 꼬일 수 있다.

xcworkspace로 프로젝트 파일이 자동으로 생겨 바로 쓰면 되긴하지만, 추가적인 부분이 필요하면 나머지 설정도 CocoaPod에 맞게 설정해둬야한다.

Carthage

장점

CocoaPod과 다르게 Xcode 프로젝트를 건드리지 않고 프레임워크만 만들어준다.

빌드 링킹 방식을 내가 직접 관리할 수 있다.

가볍고 빠르다!

 

단점

자동으로 빌드는 해주지만 통합은 내가해야한다.. (수동) 프레임워크 링킹을 추가해줘야하는것.

지원하는 라이브러리가 적음


현재는 SPM에 많이 힘을 쏟고있으니 레거시가 아니라면 SPM을 사용하는편이 관리하기 편하다 생각이든다.

728x90