可可豆和迦太基

问题描述:

我有一个迦太基和Cocoapods的项目。它们都有一个共同的依赖关系(准确地说是PureLayout)。奇怪的是,但项目编译罚款没有任何有关类重新声明的错误等。 所以问题是:为什么它的工作和实际使用哪个版本的依赖项时,我打电话给PureLayout的方法 - 迦太基或Cocoapods'?可可豆和迦太基

+1

这里是关于https://medium.com/ios-os-x-development/cocoapods-vs-carthage-675633e89c3e –

CarthageCocoaPods在构建依赖项和将它们整合到项目中有很大不同。

CocoaPods是集中式的依赖管理器,它将构建您的依赖关系并通过创建新的.xcworkspace工作空间将它们直接集成到项目中。这意味着您可以在构建之后立即访问构建依赖关系。

另一方面,迦太基是分散的依赖管理器,它使您将依赖项集成到项目中。 Carthage构建了Cartfile中指定的框架并将它们移动到Carthage/Builds文件夹中。构建过程之后,由您来集成和管理依赖关系。

在你的情况下,当你建立你的PureLayout依存性的CocoaPods和迦太基的CocoaPods它集成项目和迦太基离开你建立在Carthage/Builds这意味着你只使用的CocoaPods构建PureLayout版本。

此外,使用多个程序包/依赖项管理器是一种不好的做法。你应该坚持这一点,并对此感到满意。

+0

的很好的解释是的,如果我没有链接项目与迦太基构建的框架,将会有毫无疑问,Cocoapods版本的作品。但我做到了。它现在位于链接框架和库部分。这就是我很惊讶的原因。 –

的CocoaPods与迦太基

CocoaPods(默认)自动创建并更新的Xcode工作空间为您的应用程序和所有的依赖。

Carthage使用Xcode构建构建框架二进制文件,但留下了将它们集成到用户的责任。

CocoaPods方法更易于使用,而Carthage’s是灵活且不干扰的。

Carthage已被创建为分散依赖管理器。没有*项目清单,这减少了维护工作,避免了任何中心点的故障。但是,项目发现更加困难 - 用户必须诉诸GitHub的Trending页面或类似页面。

CocoaPods项目还必须具有所谓的podspec文件,该文件包含有关项目的元数据并指定应该如何构建它。

Carthage使用Xcode构建来构建依赖关系,而不是将它们集成到一个工作区中,它没有类似的规范文件,但您的依赖项必须包含自己的Xcode项目,该项目描述了如何构建其产品。

最终,我们创建了Carthage,因为我们需要最简单的工具 - 一个dependency manager,它可以在不接管Xcode的责任的情况下完成工作,也不需要为框架作者创建额外的工作。

CocoaPods提供了许多令人惊讶的功能,Carthage永远不会有,在牺牲额外的复杂性。