Carthage는 Cocoa 애플리케이션에 프레임워크를 추가하는 가장 간단한 방법으로 만들어졌습니다.
Carthage는 종속성을 구축하고 바이너리 프레임워크를 제공하지만 프로젝트 구조와 설정에 대한 모든 권한은 사용자가 유지합니다. 카르타고는 프로젝트 파일이나 빌드 설정을 자동으로 수정하지 않습니다.
brew install carthage
실행하여 Carthage를 얻거나 다른 설치 방법을 선택하십시오.
.xcodeproj
또는 .xcworkspace
가 있는 동일한 디렉터리에 Cartfile을 만듭니다.
Cartfile에 원하는 종속성을 나열합니다. 예를 들면 다음과 같습니다.
github "Alamofire/Alamofire" ~> 5.5
carthage update --use-xcframeworks
실행
Cartfile.resolved
파일과 Carthage
디렉토리는 .xcodeproj
또는 .xcworkspace
가 있는 동일한 디렉토리에 나타납니다.
Carthage/Build
에서 빌드된 .xcframework
번들을 애플리케이션 Xcode 프로젝트의 "프레임워크 및 라이브러리" 섹션으로 드래그하세요.
애플리케이션에 Carthage를 사용하는 경우 "Embed & Sign"을 선택하고, 그렇지 않으면 "Do Not Embed"를 선택하세요.
심층적인 가이드를 보려면 애플리케이션에 프레임워크 추가를 읽어보세요.
카르타고 설치에는 여러 가지 옵션이 있습니다:
설치 프로그램: 최신 릴리스용 Carthage.pkg
파일을 다운로드하여 실행한 다음 화면의 지시를 따릅니다. CLI를 통해 pkg를 설치하는 경우 먼저 sudo chown -R $(whoami) /usr/local
실행해야 할 수도 있습니다.
Homebrew: Homebrew를 사용하고 brew update
및 brew install carthage
실행하여 간단히 시스템에 carthage
도구를 설치할 수 있습니다. (참고: 이전에 카르타고 바이너리 버전을 설치한 경우 /Library/Frameworks/CarthageKit.framework
삭제해야 합니다).
MacPorts: MacPorts를 사용하고 sudo port selfupdate
및 sudo port install carthage
실행하여 간단히 시스템에 carthage
도구를 설치할 수 있습니다. (참고: 이전에 카르타고 바이너리 버전을 설치한 경우 /Library/Frameworks/CarthageKit.framework
삭제해야 합니다).
소스에서: 최신 개발 버전(매우 불안정하거나 호환되지 않을 수 있음)을 실행하려면 저장소의 master
브랜치를 복제한 다음 make install
실행하세요. Xcode 10.0(Swift 4.2)이 필요합니다.
Carthage를 설치하고 나면 프로젝트에 프레임워크를 추가할 수 있습니다. Carthage는 iOS 8 이상(또는 모든 OS X 버전)에서만 사용할 수 있는 동적 프레임워크만 지원합니다.
carthage update --use-xcframeworks
실행하세요. 그러면 종속성을 Carthage/Checkouts 폴더로 가져오고 각각을 빌드하거나 사전 컴파일된 XCFramework를 다운로드합니다.버전 0.37.0(2021년 1월)부터 XCFrameworks 사용을 권장하며 Apple Silicon Mac에서 구축할 때 XCFrameworks가 필요합니다. 개별 프레임워크 번들에서 XCFrameworks로 전환하려면 프로젝트에 몇 가지 변경이 필요합니다.
Carthage/Build
폴더를 삭제하세요.carthage build --use-xcframeworks
실행하여 새로운 XCFrameworks를 빌드하세요. 빌드하는 다른 인수는 평소와 같이 제공될 수 있습니다.carthage copy-frameworks
빌드 단계(있는 경우)를 삭제합니다.Xcode 12+ 비호환성 : Xcode 12 이상에서 프레임워크 번들을 빌드할 때 다중 아키텍처 플랫폼이 지원되지 않습니다. XCFrameworks를 사용하여 구축하는 것을 선호합니다. 별도의 프레임워크 번들을 빌드해야 하는 경우 해결 방법 xcconfig 파일을 사용하세요.
carthage update --platform macOS
실행하세요. 그러면 종속성을 Carthage/Checkouts 폴더로 가져오고 각각을 빌드하거나 미리 컴파일된 프레임워크를 다운로드합니다.또한 OS X에서 디버깅 및 충돌 보고를 위해 디버그 기호를 복사해야 합니다.
프로젝트에 사용하려는 프레임워크를 나열하는 Cartfile을 만듭니다.
carthage update
실행하세요. 그러면 종속성을 Carthage/Checkouts 폴더로 가져온 다음 각각을 빌드하거나 미리 컴파일된 프레임워크를 다운로드합니다.
애플리케이션 대상의 일반 설정 탭을 엽니다. Xcode 11.0 이상의 경우 "프레임워크, 라이브러리 및 포함된 콘텐츠" 섹션의 디스크에 있는 Carthage/Build 폴더에서 사용하려는 각 프레임워크를 끌어서 놓습니다. 그런 다음 "포함" 섹션의 추가된 각 항목에 대한 풀다운 메뉴에서 "포함 안 함"을 선택합니다. Xcode 10.x 이하의 경우 "링크된 프레임워크 및 라이브러리" 섹션의 디스크에 있는 Carthage/Build 폴더에서 사용하려는 각 프레임워크를 끌어서 놓습니다.
애플리케이션 대상의 Build Phases 설정 탭에서 + 아이콘을 클릭하고 New Run Script Phase 를 선택합니다. 셸을 지정하는 실행 스크립트(예: /bin/sh
)를 만들고 셸 아래의 스크립트 영역에 다음 내용을 추가합니다.
/usr/local/bin/carthage copy-frameworks
input.xcfilelist
라는 파일과 output.xcfilelist
라는 파일을 만듭니다.
input.xcfilelist
에 사용하려는 프레임워크의 경로를 추가하세요. 예를 들어:
$(SRCROOT)/Carthage/Build/iOS/Result.framework
$(SRCROOT)/Carthage/Build/iOS/ReactiveSwift.framework
$(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework
복사된 프레임워크의 경로를 output.xcfilelist
에 추가합니다. 예를 들어:
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Result.framework
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/ReactiveSwift.framework
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/ReactiveCocoa.framework
입력 파일과 함께 지정된 출력 파일을 사용하면 Xcode는 입력 파일이 변경되었거나 출력 파일이 누락된 경우에만 스크립트를 실행하면 됩니다. 이는 Carthage로 프레임워크를 다시 빌드하지 않은 경우 더티 빌드가 더 빨라진다는 것을 의미합니다.
카르타고 실행 스크립트 단계의 "입력 파일 목록" 섹션에 input.xcfilelist
를 추가하세요.
Carthage 실행 스크립트 단계의 "출력 파일 목록" 섹션에 output.xcfilelist
를 추가합니다.
이 스크립트는 범용 바이너리로 인해 발생하는 App Store 제출 버그를 해결하고 보관 시 필요한 비트코드 관련 파일과 dSYM이 복사되도록 합니다.
디버그 정보를 빌드된 제품 디렉토리에 복사하면 Xcode는 중단점에서 멈출 때마다 스택 추적을 기호화할 수 있습니다. 이를 통해 디버거에서 타사 코드를 단계별로 실행할 수도 있습니다.
App Store 또는 TestFlight에 제출하기 위해 애플리케이션을 보관할 때 Xcode는 이러한 파일을 애플리케이션의 .xcarchive
번들의 dSYMs 하위 디렉터리에도 복사합니다.
그 과정에서 카르타고는 몇 가지 빌드 아티팩트를 생성했을 것입니다. 이들 중 가장 중요한 것은 각 프레임워크에 대해 실제로 빌드된 버전을 나열하는 Cartfile.resolved 파일입니다. 프로젝트를 사용하는 다른 사람이 동일한 프레임워크 버전을 빌드하려면 해당 파일이 필요하므로 Cartfile.resolved 를 커밋해야 합니다 .
종속성 중 하나가 오래되었을 때 자동으로 경고하도록 스크립트 실행 단계를 추가할 수 있습니다.
Build Phases
설정 탭에서 +
아이콘을 클릭하고 New Run Script Phase
선택합니다. 셸을 지정하는 실행 스크립트(예: /bin/sh
)를 만들고 셸 아래의 스크립트 영역에 다음 내용을 추가합니다. /usr/local/bin/carthage outdated --xcode-warnings 2> /dev/null
Carthage는 다운로드한 Swift(및 혼합 Objective-C/Swift) 프레임워크가 로컬에서 사용 중인 동일한 버전의 Swift로 빌드되었는지 확인합니다. 버전 불일치가 있는 경우 Carthage는 소스에서 프레임워크 빌드를 진행합니다. 프레임워크를 소스에서 빌드할 수 없으면 Carthage는 실패합니다.
Carthage는 xcrun swift --version
의 출력을 사용하여 로컬 Swift 버전을 결정하므로 사용하려는 Swift 도구 체인으로 Carthage 명령을 실행해야 합니다. 많은 사용 사례에서는 추가 사항이 필요하지 않습니다. 그러나 예를 들어 Xcode 8.x를 사용하여 Swift 2.3 프로젝트를 빌드하는 경우 carthage bootstrap
에 대한 기본 swift
지정하는 한 가지 접근 방식은 다음 명령을 사용하는 것입니다.
TOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 carthage bootstrap
위 단계를 완료하고 변경 사항을 푸시한 후 프로젝트의 다른 사용자는 저장소를 가져오고 carthage bootstrap
실행하기만 하면 추가한 프레임워크를 시작할 수 있습니다.
임의의 대상의 종속성을 위해 Carthage를 사용하는 것은 애플리케이션에 Carthage를 사용하는 것과 매우 유사합니다. 주요 차이점은 Xcode에서 프레임워크가 실제로 설정되고 연결되는 방식에 있습니다.
단위 테스트 대상의 일반 설정 탭에 연결된 프레임워크 및 라이브러리 섹션이 없기 때문에 대신 빌드된 프레임워크를 라이브러리와 바이너리 연결 빌드 단계로 끌어야 합니다.
빌드 설정 탭 아래의 테스트 대상에서 @loader_path/Frameworks
아직 존재하지 않는 경우 실행 경로 검색 경로 에 추가합니다.
드문 경우지만 각 종속성을 빌드 제품에 복사할 수도 있습니다(예: 외부 프레임워크 내에 종속성을 포함하거나 테스트 번들에 종속성이 있는지 확인하기 위해). 이렇게 하려면 프레임워크 대상을 사용하여 새 파일 복사 빌드 단계를 만든 다음 거기에 프레임워크 참조도 추가합니다. 테스트 번들은 제거된 프레임워크가 필요하지 않으며 copy-frameworks
의 동시 인스턴스 실행(병렬 빌드가 켜진 상태)이 지원되지 않으므로 carthage copy-frameworks
명령을 사용하면 안 됩니다.
Cartfile을 수정했거나 각 프레임워크의 최신 버전으로 업데이트하려는 경우(지정한 요구 사항에 따라) carthage update
명령을 다시 실행하면 됩니다.
하나 또는 특정 종속성만 업데이트하려면 공백으로 구분된 목록으로 update
명령에 전달하세요. 예를 들어
carthage update Box
또는
carthage update Box Result
속도를 높이고 메모리 사용량을 줄이기 위해 프레임워크 업그레이드 논리를 다시 작성했습니다. 현재는 선택 기능입니다. 업데이트 명령에 --new-resolver
전달하여 사용할 수 있습니다. 예:
carthage update --new-resolver Box
업데이트 중에 성능 문제가 발생하는 경우 새 해결 프로그램을 사용해 보세요.
프로젝트에 추가하려는 프레임워크에 Cartfile에 명시적으로 나열된 종속성이 있는 경우 Carthage는 자동으로 이를 검색합니다. 그런 다음 Carthage/Build 폴더에서 프로젝트로 직접 드래그 해야 합니다.
프로젝트에 포함된 프레임워크에 다른 프레임워크에 대한 종속성이 있는 경우 해당 프레임 워크를 애플리케이션 대상에 연결 해야 합니다(애플리케이션 대상이 해당 프레임워크에 대한 종속성이 없고 절대 사용하지 않더라도).
기본적으로 Carthage는 종속성 소스 파일을 프로젝트 폴더로 직접 체크아웃하여 사용자가 선택한 대로 해당 파일을 커밋하거나 무시할 수 있도록 합니다. 대신 Git 하위 모듈로 종속성을 사용하려면(아마도 그 안에 변경 사항을 커밋하고 푸시할 수 있도록) --use-submodules
플래그를 사용하여 carthage update
또는 carthage checkout
실행할 수 있습니다.
이런 방식으로 실행하면 카르타고는 저장소의 .gitmodules
및 .git/config
파일에 쓰고 종속성 버전이 변경되면 자동으로 하위 모듈을 업데이트합니다.
개발 중에 종속성에 대해 작업하고 상위 프로젝트를 빌드할 때 자동으로 다시 빌드되도록 하려면 다음과 같이 Carthage를 호출하는 스크립트 실행 빌드 단계를 추가할 수 있습니다.
/usr/local/bin/carthage build --platform " $PLATFORM_NAME " --project-directory " $SRCROOT "
일반 체크아웃은 직접 수정하면 안 되기 때문에 이 작업을 수행하기 전에 하위 모듈을 사용해야 합니다.
기본적으로 Carthage는 이전과 동일한 해결 버전인지 여부에 관계없이 종속성을 다시 빌드합니다. --cache-builds
전달하면 카르타고는 가능한 경우 종속성을 다시 빌드하는 것을 방지합니다. 카르타고가 이 캐싱을 수행하는 방법에 대한 자세한 내용은 버전 파일 정보를 참조하세요.
참고: 현재 --cache-builds
--use-submodules
와 호환되지 않습니다. 두 가지를 모두 사용하면 하위 모듈 종속성에 대한 작업 복사본과 커밋된 변경 사항이 올바르게 다시 빌드되지 않습니다. 자세한 내용은 #1785를 참조하세요.
Bash/Zsh/Fish 완성에 설명된 대로 카르타고 명령 및 옵션의 자동 완성을 사용할 수 있습니다.
카르타고는 공식적으로 동적 프레임워크만 지원합니다 . 동적 프레임워크는 모든 버전의 OS X에서 사용할 수 있지만 iOS 8 이상 에서만 사용할 수 있습니다. 또한 버전 0.30.0부터 Carthage는 정적 프레임워크를 지원합니다.
Carthage에는 중앙화된 패키지 목록이 없고 프로젝트 사양 형식이 없기 때문에 대부분의 프레임워크는 자동으로 빌드되어야 합니다 .
모든 프레임워크 프로젝트의 특정 요구 사항은 아래에 나열되어 있습니다.
Carthage는 .xcodeproj
에서 공유되는 Xcode 구성표만 빌드합니다. carthage build --no-skip-current
실행한 다음 Carthage/Build 폴더를 확인하여 의도한 모든 계획이 성공적으로 빌드되었는지 확인할 수 있습니다.
해당 명령을 실행할 때 중요한 구성표가 빌드되지 않은 경우 Xcode를 열고 구성표가 Shared 로 표시되어 Carthage가 이를 발견할 수 있는지 확인하세요.
carthage build --no-skip-current
에서 빌드 오류가 발생하면 xcodebuild -scheme SCHEME -workspace WORKSPACE build
또는 xcodebuild -scheme SCHEME -project PROJECT build
(실제 값 사용)를 실행해 보고 동일한 오류가 발생하는지 확인하세요. 그러면 문제를 해결하는 데 충분한 정보가 나올 것입니다.
여러 버전의 Apple 개발자 도구가 설치되어 있는 경우(예: Xcode 베타), xcode-select
사용하여 Carthage가 사용하는 버전을 변경하세요.
여전히 Carthage로 프레임워크를 구축할 수 없는 경우 이슈를 열어주시면 기꺼이 도와드리겠습니다!
Carthage는 저장소에 게시된 태그를 검색하고 각 태그 이름을 의미론적 버전으로 해석하여 사용 가능한 프레임워크 버전을 결정합니다. 예를 들어 v1.2
태그에서 의미 체계 버전은 1.2.0입니다.
버전 번호가 없거나 버전 번호 뒤에 문자(예: 1.2-alpha-1
)가 있는 태그는 현재 지원되지 않으며 무시됩니다.
카르타고는 프로젝트 저장소의 GitHub 릴리스에 연결되거나 바이너리 프로젝트 정의 파일을 통해 처음부터 빌드하는 대신 미리 빌드된 프레임워크를 자동으로 사용할 수 있습니다.
특정 태그에 대해 사전 구축된 프레임워크를 제공하려면 지원되는 모든 플랫폼에 대한 바이너리를 하나의 아카이브로 함께 압축해야 하며 해당 아카이브는 해당 태그에 해당하는 게시된 릴리스에 첨부되어야 합니다. 첨부 파일에는 바이너리가 포함되어 있음을 Carthage에 나타내기 위해 이름에 .framework
포함되어야 합니다(예: ReactiveCocoa.framework.zip
). 아카이브의 디렉토리 구조는 자유 형식이지만 프레임워크는 이름(예: ReactiveCocoa.framework
)에 따라 Carthage/Build/<platform>
에 복사되므로 아카이브에 한 번만 나타나야 합니다 .
사전 구축된 XCFrameworks를 제공하려면 --use-xcframeworks
사용하여 구축하고 동일한 프로세스에 따라 모든 XCFrameworks를 하나의 아카이브로 압축합니다. 첨부 파일 이름에 .xcframework
포함하세요. 버전 0.38.0부터 Carthage는 --use-xcframeworks
전달될 때 .xcframework
첨부 파일을 다운로드하는 것을 선호합니다.
다음을 사용하여 카르타고 자체로 보관 작업을 수행할 수 있습니다.
-carthage build --no-skip-current
-carthage archive YourFrameworkName
또는 대안적으로
carthage build --archive
초안 릴리스는 원하는 태그에 해당하더라도 자동으로 무시됩니다.
태그된 릴리스를 빌드하고 업로드하기 위해 travis-ci를 사용할 수 있습니다.
gem install travis
로 travis CLI 설치
저장소에 대한 travis-ci 설정(1단계 및 2단계)
해당 템플릿을 기반으로 저장소 루트에 .travis.yml
파일을 만듭니다. FRAMEWORK_NAME
올바른 값으로 설정하세요.
PROJECT_PLACEHOLDER 및 SCHEME_PLACEHOLDER 바꾸기
프로젝트 대신 작업 공간을 사용하는 경우 xcode_project 줄을 제거하고 xcode_workspace 줄의 주석 처리를 제거하세요.
프로젝트는 MyProject.xcodeproj 형식이어야 합니다.
작업공간은 MyWorkspace.xcworkspace 형식이어야 합니다.
xcode_sdk
값을 다른 SDK로 자유롭게 업데이트하세요. iphoneos SDK에서 테스트하려면 코드 서명 ID를 업로드해야 합니다.
자세한 내용을 보려면 Objective-C 프로젝트에 대한 Travis 문서를 방문하세요.
language : objective-c
osx_image : xcode7.3
xcode_project : <PROJECT_PLACEHOLDER>
# xcode_workspace: <WORKSPACE_PLACEHOLDER>
xcode_scheme : <SCHEME_PLACEHOLDER>
xcode_sdk : iphonesimulator9.3
env :
global :
- FRAMEWORK_NAME=<THIS_IS_A_PLACEHOLDER_REPLACE_ME>
before_install :
- brew update
- brew outdated carthage || brew upgrade carthage
before_script :
# bootstrap the dependencies for the project
# you can remove if you don't have dependencies
- carthage bootstrap
before_deploy :
- carthage build --no-skip-current
- carthage archive $FRAMEWORK_NAME
travis setup releases
실행하고 여기에서 문서를 따르세요.
이 명령은 travis가 GitHub.com에 릴리스를 업로드할 수 있도록 GitHub 자격 증명을 .travis.yml
파일로 인코딩합니다. 업로드할 파일을 묻는 메시지가 표시되면 $FRAMEWORK_NAME.framework.zip
입력합니다.
태그에서 실행되도록 배포 섹션을 업데이트합니다.
.travis.yml
에서 다음을 찾습니다.
on :
repo : repo/repo
그리고 tags: true
및 skip_cleanup: true
:
skip_cleanup : true
on :
repo : repo/repo
tags : true
그러면 새 태그가 푸시될 때 Travis가 배포를 생성하도록 알리고 Travis가 생성된 zip 파일을 정리하는 것을 방지할 수 있습니다.
앱에 많은 동적 프레임워크를 포함하면 사전 기본 실행 시간이 상당히 느려질 수 있습니다. 카르타고는 동적 프레임워크를 정적 프레임워크로 구축하여 이를 완화하는 데 도움을 줄 수 있습니다. 정적 프레임워크는 애플리케이션에 직접 연결되거나 워크플로우에 대한 몇 가지 간단한 수정을 통해 더 큰 동적 프레임워크로 병합될 수 있으며, 이로 인해 사전 기본 실행 시간이 크게 단축될 수 있습니다.
버전 0.30.0부터 Carthage 프로젝트는 Swift 또는 Objective-C로 작성된 정적으로 링크된 프레임워크에 대한 지원을 출시하며 이에 대한 지원은 Xcode 9.4에 도입되었습니다. 그러나 구체적으로 Frameworks 라고 되어 있으므로 Darwin은 .framework 확장자와 정적으로 링크된 객체 아카이브를 포함하는 번들을 제공합니다. 카르타고는 현재 정적 라이브러리 체계를 지원하지 않으며 향후 지원을 도입할 계획도 없습니다.
작업 흐름은 거의 다르지 않습니다.
하지만:
자세한 내용은 StaticFrameworks 문서를 참조하세요.
이 접근 방식에는 몇 가지 주의 사항이 적용됩니다.
귀하의 프로젝트가 카르타고와 함께 사용될 수 있다는 것을 광고하고 싶으십니까? 호환성 배지를 추가할 수 있습니다.
... 다음 Markdown을 삽입하기만 하면 README
에 추가됩니다.
[ ![ Carthage compatible ] ( https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat )] ( https://github.com/Carthage/Carthage )
사전 빌드된 프레임워크는 프레임워크가 빌드된 머신이 아닌 다른 머신에서 단계 실행을 사용하여 디버깅할 수 없습니다. 간단히 carthage bootstrap/build/update --no-use-binaries
이 문제를 해결할 수 있지만, 보다 자동화된 해결 방법은 #924를 참조하세요. Apple이 이 문제의 근본 원인을 해결하도록 하려면 Dupe rdar://23551273을 사용하세요.
carthage
명령줄 도구의 기능 대부분은 실제로 CarthageKit이라는 프레임워크에 캡슐화되어 있습니다.
Carthage를 다른 도구의 일부로 사용하거나 Carthage의 기능을 확장하는 데 관심이 있다면 CarthageKit 소스 코드를 살펴보고 API가 귀하의 요구 사항에 맞는지 확인하세요.
CocoaPods는 Cocoa의 오랜 의존성 관리자입니다. 그렇다면 카르타고는 왜 만들어졌는가?
첫째, CocoaPods(기본적으로)는 애플리케이션과 모든 종속성을 위한 Xcode 작업공간을 자동으로 생성하고 업데이트합니다. Carthage는 xcodebuild
사용하여 프레임워크 바이너리를 빌드하지만 이를 통합하는 책임은 사용자에게 맡깁니다. CocoaPods의 접근 방식은 사용하기 쉬운 반면 Carthage의 접근 방식은 유연하고 방해가 되지 않습니다.
CocoaPods의 목표는 README에 다음과 같이 나열되어 있습니다.
...보다 중앙 집중화된 생태계를 만들어 타사 오픈 소스 라이브러리의 검색 가능성과 참여를 향상합니다.
이와 대조적으로 Carthage는 분산형 종속성 관리자로 만들어졌습니다. 유지 관리 작업을 줄이고 중앙 실패 지점을 방지하는 중앙 프로젝트 목록이 없습니다. 그러나 프로젝트 검색은 더 어렵습니다. 사용자는 GitHub의 인기 페이지 또는 이와 유사한 페이지를 사용해야 합니다.
CocoaPods 프로젝트에는 프로젝트에 대한 메타데이터를 포함하고 빌드 방법을 지정하는 podspec 파일도 있어야 합니다. Carthage는 xcodebuild
사용하여 종속성을 빌드합니다. 단일 작업공간에 통합하는 대신 유사한 사양 파일이 없지만 종속성은 제품 빌드 방법을 설명하는 자체 Xcode 프로젝트를 포함해야 합니다.
궁극적으로 우리는 가능한 가장 간단한 도구, 즉 Xcode의 책임을 맡지 않고 프레임워크 작성자를 위한 추가 작업을 생성하지 않고 작업을 완료하는 종속성 관리자를 원했기 때문에 Carthage를 만들었습니다. CocoaPods는 추가적인 복잡성을 희생하면서 Carthage가 결코 갖지 못할 많은 놀라운 기능을 제공합니다.
Carthage는 MIT 라이센스에 따라 출시됩니다.
헤더 배경화면 사진은 CC BY-NC-SA 2.0 라이센스에 따라 공개됩니다. Richard Mortel의 원본 사진.