Carthage

Carthage1CocoaPods 같은 종속적 관리 메니져 입니다. 하지만 CocoaPods 처럼 WorkSpace 를 생성하지 않고, 프레임워크 바이너리를 xcodebuild를 사용하여 빌드가 되지만 프로젝트에 통합은 하지 않습니다. 프레임워크들은 사용자가 수동으로 관리 해주어야 합니다.

raywenderlich.com의 Carthage Tutorial: Getting Started 글을 참조 번역 했습니다.

Carthage 설치

Homebrew 패키지 메니져로 Carthage 를 설치 합니다.

$ brew update
$ brew install carthage


라이브러리 프레임워크 설치

라이브러리를 설치 할 프로젝트 root에서 touch 커맨드를 이용하여 빈 Cartfile 을 생성 합니다.

$ touch Cartfile

Xcode 를 이용하여 Cartfile 을 수정 합니다.

$ open -a Xcode Cartfile

Cartfile 안에 다운받을 라이브러리들을 추가 하기 위해 해당 라인들을 입력 합니다.

github "Alamofire/Alamofire" == 2.0
github "SwiftyJSON/SwiftyJSON" ~> 2.3.0

== 2.0 - 2.0 버전을 내려받아라
>= 2.0 - 2.0 버전보다 큰 버전을 내려 받아라
~> 2.0 - 2.0 버전과 호환되는 어떤 버전을 내려받아라

저장 후에 커맨드 라인에서 carthageupdate 해줍니다.

$ cartfile update //전체 빌드
$ carthage update --platform iOS //iOS 빌드

옵션에 따라 선택하시면 됩니다. 그리고, 여기서 Build Failed 가 나오면 안됩니다.

정상적으로 빌드가 완료 되었다면 아래와 같은 폴더들이 생성 됩니다.


라이브러리 프레임워크 추가

CarthageCocoaPods 와 달리 직접 프레임워크를 프로젝트에 직접 추가를 해야 합니다. Carthage 폴더에 있는 프레임워크 (.framework) 파일들을 Project Setting 에서 Linked Frameworks and Libraries 에 추가 합니다. 그리고 프로젝트 타겟의 Build Phases 탭에서 + 버튼을 눌러서 Run Script 를 추가 하고, 다음 줄을 입력 합니다.

/usr/local/bin/carthage copy-frameworks

마지막으로, Input files 에 + 버튼을 눌러서 프레임워크 주소 들을 적습니다.

$(SRCROOT)/Carthage/Build/iOS/Alamofire.framework
$(SRCROOT)/Carthage/Build/iOS/SwiftyJSON.framework


정리하며

CarthageCocoaPods 처럼 아직 많은 라이브러리들이 지원을 하고 있지는 않습니다만, 점점 지원을 하기 시작하고있습니다. 그리고, 프로젝트 통합을 하지 않는 장점과 직접 세팅을 해줘야 하는 단점이 있으니 프로젝트에 맞게 선택해서 사용하면 될것 같습니다.

  1. 카르타고