Carthage Github 传送门
简介
Carthage is intended to be the simplest way to add frameworks to your Cocoa application.
The basic workflow looks something like this:
- Create a Cartfile that lists the frameworks you’d like to use in your project.
- Run Carthage, which fetches and builds each framework you’ve listed.
- Drag the built
.framework
binaries into your application’s Xcode project.
Carthage builds your dependencies and provides you with binary frameworks, but you retain full control over your project structure and setup. Carthage does not automatically modify your project files or your build settings.
Carthage的目标是用最简单的方式来管理Cocoa第三方框架。
基本的工作流如下:
- 创建一个Cartfile,包含你希望在项目中使用的框架的列表
- 运行Carthage,将会获取列出的框架并编译它们
- 将编译完成的
.framework
二进制文件拖拽到你的Xcode项目当中
Carthage编译你的依赖,并提供框架的二进制文件,但你仍然保留对项目的结构和设置的完整控制。Carthage不会自动的修改你的项目文件或编译设置。
Carthage与CocoaPods的不同
首先,CocoaPods默认会自动创建并更新你的应用程序和所有依赖的Xcode workspace。Carthage使用xcodebuild来编译框架的二进制文件,但如何集成它们将交由用户自己判断。CocoaPods的方法更易于使用,但Carthage更灵活并且是非侵入性的。
CocoaPods的目标在它的README文件描述如下:
…为提高第三方开源库的可见性和参与度,创建一个更中心化的生态系统。
与之对照,Carthage创建的是去中心化的依赖管理器。它没有总项目的列表,这能够减少维护工作并且避免任何中心化带来的问题(如中央服务器宕机)。不过,这样也有一些缺点,就是项目的发现将更困难,用户将依赖于Github的趋势页面或者类似的代码库来寻找项目。
CocoaPods项目同时还必须包含一个podspec
文件,里面是项目的一些元数据,以及确定项目的编译方式。
Carthage使用xcodebuild
来编译依赖,而不是将他们集成进一个workspace,因此无需类似的设定文件。不过依赖需要包含自己的Xcode工程文件来描述如何编译。
最后,我们创建Carthage的原因是想要一种尽可能简单的工具——一个只关心本职工作的依赖管理器,而不是取代部分Xcode的功能,或者需要 让框架作者做一些额外的工作。CocoaPods提供的一些特性很棒,但由于附加的复杂性,它们将不会被包含在Carthage当中。