Carthage

2021년 11월 19일 수정

Carthage

Carthage(카르타고)는 iOS 혹은 macOS 용 외부 오픈소스 프레임워크나 라이브러리 프로젝트 의존성을 관리해 주는 도구다. 비슷한 도구로 Swift Package Manager 혹은 Cocoapods가 있다.

Cocoapods와 차이점이 있다면, 중앙 집중적으로 패키지를 관리하지 않는다는 점이다. 개발자는 필요한 라이브러리나 프레임워크를 분산된 패키지 저장소를 직접 지목해 의존 패키지를 설치할 수 있게 해 준다.

그 외에 프로젝트 세팅을 전혀 건드리지 않는다는 점도 차이가 있다. 대신 터미널에서 CLI 명령어를 사용해서 설치 및 관리를 해야 한다.

Cartfile

Cartfile 은 Carthage 의존성 명세 파일이다.

의존성 패키지 명시

대충 아래와 같은 식으로 의존성을 추가할 수 있다.

github "user/projectname"

요즘은 웬만하면 깃허브를 이용해 프로젝트를 개발하면서 동시에 배포하는 경우가 많으므로 아마도 이런 의존성을 적는 방법이 가장 많이 쓰일 것 같다. 딱히 브랜치를 명시하지 않았으므로 대표 브랜치의 것이 사용될 것이다.

필요 버전 명시

원하는 버전이 있을 경우 아래와 같이 버전 룰을 표기할 수 있다.

github "user/projectname" >= 1.0
github "user/projectname" ~> 1.0
github "user/projectname" == 1.0

가운데 것만 제외하면 나머지는 직관적이다. 가운데 것은 1.0과 호환되는 버전이라는 의미로 대충 1.0.x 라는 의미로 이해하면 될 것 같다.

브랜치 명시

원한는 브랜치가 있을 경우 아래와 같이 명시할 수 있다.

github "user/projectname" "master" == 1.0

위의 예는 버전과 브랜치를 동시에 명시한 예이다.

CLI 사용법 정리

Carthage 설치

Homebrew로 쉽게 설치할 수 있다.

brew install carthage

의존성 설치하기

Cartfile을 작성한 후 아래 커맨드로 의존성을 설치할 수 있다.

carthage update

알아서 필요한 의존성을 클론 받아서 설치까지 진행한다.

플랫폼 전용 빌드

특정 OS 전용으로 빌드할 경우 아래와 같은 명령을 사용할 수 있다.

carthage update --platform iOS

위는 iOS 타깃으로만 빌드를 하는 명령이다. 물론 비슷하게 macOS 용 타깃 전용으로 빌드 할 수도 있다.

carthage update --platform macOS

없을 경우 프로젝트에서 지원하는 모든 아키텍처로 빌드되는 것 같다.

빌드된 프레임워크 위치

빌드가 완료되면 Carthage/Build/[Platform] 디렉터리에서 빌드 된 프레임워크를 찾을 수 있다. 이 프레임워크들을 Xcode에 드래그 해서 적당히 세팅해 주면 된다.