본문 바로가기
iOS

[iOS] Carthage

by thoonk: 2023. 1. 12.

Carthage의 특징과 사용법을 기록합니다.

Carthage

오픈소스 라이브러리를 관리해주는 Dependency Manager

decentralized(탈중앙화)

Swift 코드 기반

바이너리 프레임워크 제공

미리 빌드된 프레임워크 사용(오래 걸릴 수 있는 단점 존재) → CocoaPods 이용할 때 보다 빠른 빌드 속도 

프로젝트 파일이나 빌드 설정을 수동으로 해야 함. → Xcode 설정 또는 프로젝트 파일에 영향을 주지 않음.

.xcodeproj로 프로젝트 실행

라이브러리 업데이트 및 제거가 쉬움.

CI 서버에 쉽게 통합시킬 수 있음.

비교적 최신 프레임워크라 지원하지 않는 라이브러리들이 있음.

동적 프레임워크에서만 작동함.

Carthage 적용해보기

1. Homebrew를 이용해서 carthage 설치

$ brew update
$ brew install carthage

 

2. 프로젝트 폴더 경로(project.xcodeproj 있는 폴더)에서 Cartfile 생성

$ touch Cartfile

 

3. Cartfile 수정

$ open -a Xcode ./Cartfile
// 또는
$ vim Cartfile

 

4. 사용할 라이브러리 Github 페이지 진입 👉 Carthage 지원 여부 확인 👉 Cartfile에 복붙

 

GitHub - SnapKit/SnapKit: A Swift Autolayout DSL for iOS & OS X

A Swift Autolayout DSL for iOS & OS X. Contribute to SnapKit/SnapKit development by creating an account on GitHub.

github.com

github "SnapKit/SnapKit" ~> 5.0.0

 

5. Carthage update

$ carthage update --use-xcframeworks
// iOS Target만 빌드
$ carthage update --use-xcframeworks --platform iOS

 

6. Carthage 폴더 👉 Build 폴더 👉 Snapkit.xcframework 파일 Xcode Project로 드래그 앤 드롭

 

👈 프로젝트 폴더

Carthage/CheckOuts 폴더: 해당 폴더로 dependency를 가져와서 빌드함.

Carthage/Build 폴더: dependency 빌드 결과

Cartfile.resolved 파일: 각 프레임워크 빌드 버전 리스트

 

 

 

 

 

 

👈 빌드된 파일들을 확인할 수 있음.

 

 

 

 

 

 

 

 

 

 

 

Target 👉 Build Phases 👉 Link Binary with Libraries (Test Target 동일)

 

7. 프로젝트 빌드 확인(Command + B)

 

Carthage 삭제해보기

1. Cartfile 및 Cartfile.resolved 파일 삭제

2. Carthage 폴더 삭제

3. Target 👉 Generate 👉 Frameworks, Libraries, and Embedded Content에서 linked frameworks 삭제

4. Target 👉 Build Phase 👉 copy-frameworks script 삭제 (설정한 경우에 해당)

 

부족한 점 피드백해주시면 감사합니다👍

 

Ref.

https://github.com/Carthage/Carthage

https://medium.com/xcblog/carthage-or-cocoapods-that-is-the-question-1074edaafbcb

https://zeddios.tistory.com/1247

https://medium.com/@jang.wangsu/ios-swift-카르타고-carthage-란-사용법은-예제-따라하기까지-127e71fdd253

 

'iOS' 카테고리의 다른 글

[iOS] 타사 SDK 요구 사항 변경 예정  (0) 2024.03.22
[iOS] Developer Mode  (0) 2024.03.12
[iOS] Crashlytics 적용  (0) 2023.01.03
[iOS] Tag을 활용한 UIButton Action 처리  (0) 2022.10.28
[iOS] Custom Navigation Controller Pop Gesture Swift  (0) 2022.09.22

댓글