[iOS] Carthage
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" ~> 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