[iOS Swift] 카르타고(Carthage) 란? 사용법은? 예제 따라하기까지!!

Clint Jang
10 min readDec 22, 2018

--

오늘은 Carthage 에 대해 적어보려고 합니다.

Carthage는 공식 링크는 아래 Github Link를 사용하고 있습니다.

개발을 할 때, 라이브러리를 사용하면 참 편하죠?

Carthage 란?

저는 Carthage 을 처음 봤을 때, 제일 처음 고민한 것이 어떻게 읽어야 되지? 였습니다.

검색해보니, 다들 카르타고 라고 부르고 사용하고 있더군요.

역시 그래서 네이버 사전 검색을 ..

카르타고 고대 도시국가 였군요.

그냥.. 이름은 외워야겠어요.

Carthage 는 iOS개발을 할 때 사용하는 라이브러리 관리도구 입니다.

카르타고 설명에 앞서서..

iOS 모바일 개발을 하면서 접하게되는 라이브러리 관리 도구에는

CocoaPods 라는 것도 있습니다.

아마 대부분 CocoaPods를 먼저 접하셨을 것 입니다.

처음 사용에 익숙해 지는 게 어렵지.. 익숙해지면 금방 편해지고 익숙해 지더군요.

그리고 라이브러리도 같이 빌드가 되면서, 컴파일 에러나,

라이브러리 소스에 중단점을 걸어서 디버깅도 하며,

문제점 해결이나 검토가 가능해서 참 좋습니다.

하지만 제가 느끼기에 아쉬운 점이 하나 있더군요.

같이 컴파일을 해버리니, 개발이 많이 진행된 소스에서

라이브러리가 많을 경우에서 클린 빌드 할 경우 .. 참 오래 걸리더군요..

신형 노트북을 가지고 싶다..

실제로 라이브러리를 사용하면서 라이브러리 소스를 중단점까지 걸면서 디버깅 할 일은 거의 없습니다.

프로그램 수행 도중 해당 모듈이 필요할 때 불러쓰는 프로그램 모듈 정도로만 사용되서, 컴파일 시에는 구지 계속 해서 빌드를 안해도 괜찮을 것 같다는 생각이 들더군요.

그리고

워크스페이스(workspace) 로 개발하면서, 라이브러리를 콘솔 명령어를 통해 넣고 빼고 하는 과정에서, 간혹 복잡하게 꼬이는 경우가 있어서

$ pod update로도 잘 해결이 안되는 경우도 발생하더군요.

라이브러리를 모두 지우고 기존 설정 스크립트도 모두 날리고 다시 pod를 설정하기 전 처럼, 셋팅한 후에 다시 install 하는 경우도 간혹 있었습니다.

그땐.. 워크스페이스 로 개발하고 싶지 않다 라는 생각이 들어본 적이 있지 않으셨을까 싶습니다.

프로젝트.xcodeproj 를 실행해서 개발하던 때가 좋았는 데.. 😭

그냥 든 생각이죠.

카르타고(Carthage)란?

오픈소스 라이브러리 들을 쉽게 관리할 수 있게 도와줍니다.

라이브러리는 동적 라이브러리로 관리할 수 있게 하여줍니다.

‘라이브러리명.framework’ 파일을 만들어서, 프로젝트에 연결 시켜 사용합니다.

라이브러리 관리 도구는 Swift에는 크게 3가지가 있는 것으로 알고 있습니다.

CocoaPods, Swift Package Manager, Carthage 가 있습니다.

주로 사용하는 것은 CocoaPods와 Carthage 이죠.

Carthage는 CocoaPods 만큼 사용이 쉽지는 않습니다. 조금은 더.. 많이 손이 가는 것 같습니다.

Carthage 설정도 하고, Update 도 해서 Framework 파일도 생성을 하고, 만들어진 라이브러리명.framework 파일을 프로젝트에 추가하는 설정도 해주어야 됩니다.

대신 기존처럼 프로젝트명.xcodeproj 을 실행해서 프로젝트를 실행 할 수 있고, CocoaPods 를 이용해서 개발 할 때 보다 빠른 빌드 속도를 제공해 줄 것입니다.

그런데 아쉽죠.. CocoaPods 의 편리한 설정이.. 😓

최근 여러 오픈 라이브러리들에서 Carthage의 지원이 늘어나고 있습니다.

물론, cocoapods 와 carthage는 함께 사용이 가능입니다.

반드시 Carthage를 사용할 필요는 없지만,

iOS 개발자라면 사용 방법은 익혀두시는 게 좋겠지요? 😀

카르타고 샘플 프로젝트 만들어보기

간단하게 카르타고를 사용해서 기본 프로젝트를 만들어볼께요.

이렇게 만들어본 샘플은 Github에 올려놓았습니다. 링크는 글 마지막에 있습니다.

Carthage 설치

카르타고 부터 설치해야겠죠

macOS 용 패키지 관리자인 brew를 통해서 설치가 가능합니다.

$ brew update// 미설치시
$ brew install carthage
// 설치가 된 경우
$ brew upgrade carthage

다른 설치 방법은 더 있는 것 같지만 brew가 가장 편한 것 같습니다.

라이브러리 적용해보기

Swift로 Rx 개발을 하려면 RxSwift 라이브러리가 필요합니다.

RxSwift는 Swift로 FRP를 가능하게 하여주는 ReactiveX 라이브러리이죠..

추가해 보겠습니다.

1. 프로젝트 생성

우선 프로젝트를 만듭니다.

저는 JWSCarthageSample 라고 만들었습니다.

2. Cartfile 파일 작성

프로젝트의 JWSCarthageSample.xcodeproj가 있는 폴더에서 Cartfile을 만들고 내용을 작성할 것입니다.

  • Cartfile 파일 생성
$ lsJWSCarthageSample  JWSCarthageSampleTestsJWSCarthageSample.xcodeproj JWSCarthageSampleUITests$ touch Cartfile
  • Cartfile 수정을 위한 문서 편집 실행
$ open -a Xcode ./Cartfile

3. Cartfile 작성

자세한 작성방법은 Cartfile 작성이 나와있는 링크를 참고 하시면 됩니다.

그럼 RxSwift 를 추가하려면 ReactiveX/RxSwift 를 구하면 된다고 쓰여있으니 그렇게!!

참고로

github “[GITHUB ACCOUNT]/[REPO NAME]”

형식으로 작성하면 됩니다.

Cartfile에서 내용을 작성해주고, 이제 update 콘솔 명령어를 실행해 보겠습니다.

$ carthage update*** Fetching RxSwift*** Checking out RxSwift at "4.4.0"*** xcodebuild output can be found in /var/folders/zs/8q7f_x6d4zb6jsy_dpvqc5m80000gn/T/carthage-xcodebuild.4P8aec.log*** Downloading RxSwift.framework binary at "Atomic"
or
// Tip : iOS 폴더만 생성하기
$ carthage update --platform iOS

그러면 파일이 생성됩니다.

carthage update 실행 전, 폴더 구조는

carthage update 실행 후, 폴더 구조는

RxSwift에 필요한 프레임워크들이 생성되었네요.

그리고 Cartfile 파일이 있는 폴더에는

Cartfile.resolved 파일이 생겼네요.

이제 거의 다 했습니다. 이제 이렇게 생성된 프레임워크 파일을 소스에 연결 시켜 보겠습니다.

4. 프로젝트에 라이브러리 연결하기

프로젝트를 실행해서 Link Binary With Libraries 에 추가해줍니다. 또는 Linked Frameworks and Libraries 쪽에 추가해 줘도 됩니다. (아무대나 편하신곳)

완료 인증샷~ (RxTest 는 제외하였습니다.)

5. 프로젝트에 Run Script 추가

라이브러리 연결만 하고 실행하면 라이브러리를 못찾아 Error 가 발생합니다.

마지막 과정입니다.

프로젝트에서 Build Phases 안에 Run Script 코드를 추가해야됩니다.

“/usr/local/bin/carthage copy-frameworks” 를 복사해서 추가해 주고,

Add Input Files 에다가 각각 추가한 라이브러리 정보를 추가해줘야됩니다.

‘$(SRCROOT)/Carthage/Build/iOS/라이브러리명.framework’

이제!! 빌드해보니 빌드가 성공하는 군요

위 예제 파일은 아래 링크에 넣어두었습니다.

카르타고가 적용된 오픈소스가 늘어나고 있고,

카르타고로 라이브러리를 관리하는 움직임이 많아지는 것 같습니다.

오늘 기준(2018년 12월 22일) Github에서 Star 카운트를 보면

  • CocoaPods : 11,146
  • Carthage : 12,346

.. 우와 Carthage Star 수가 높군요!! 물론 이렇게 비교하는 것은 아니지만

후발 주자인 Carthage 가 벌써 따라 잡았네요.

내년에는 또 어떻게 iOS 개발 생태계가 어떻게 변해가려나 궁금하군요.

읽어주셔서 감사합니다.

즐거운 하루 되세요 :) 🙇‍

--

--