zoukankan      html  css  js  c++  java
  • Carthage

    项目源址:https://github.com/Carthage/Carthage

    想到iOS/OS X项目的依赖管理,第一个想到的一定是大名鼎鼎的CocoaPods。下面是Carthage介绍里面的讲述两者的不同之处:

    CocoaPods (默认)自动建立和更新一个Xcode workspace,用来管理你的项目和所有依赖。Carthage使用xcodebuild来编译出二进制库,剩下的集成工作完全交给开发人员。

    CocoaPods使用起来方便,Carthage更加灵活并且对现有项目没有太多的侵略性。

    CocoaPods希望建立一个生态系统,可以更加方便的发现和集成第三方代码库。Carthage希望变成一个去中心化的依赖管理系统,不提供中心化的项目列表,减少维护成本和单点失败的概率。不过这样给开发人员寻找项目带来不便。

    CocoaPods的项目需要配置podspec文件,包含了项目和第三方库的信息。Carthage并不使用类似的配置文件,第三方库的依赖关系是通过Xcode项目来配置的。

    安装Carthage

    1. 直接下载安装包: 地址, 不过文件host在amazon S3上面,我尝试过几次未果。。。

    2. 使用Homebrew

    brew update
    brew install carthage

    编译第三方库

    1. 创建Cartfile列出你要使用的第三方库信息, 下面是一个简单的例子

    构造两个库:ReactiveCoca 2.3.1版本及以上,Mantle 1.x版本

    # Require version 2.3.1 or later
    github "ReactiveCocoa/ReactiveCocoa" >= 2.3.1
    
    # Require version 1.x
    github "Mantle/Mantle" ~> 1.0    # (1.0 or later, but less than 2.0)

    2. Run carthage update

    carthage update

    3. 这时会生成如下的文件目录

     |-Carthage
     |---Build
     |-----Mac
     |-------Mantle.framework
     |---------Versions
     |-----------A
     |-------------Headers
     |-------------Modules
     |-------------Resources
     |-------ReactiveCocoa.framework
     |---------Versions
     |-----------A
     |-------------Headers
     |-------------Modules
     |---------------ReactiveCocoa.swiftmodule
     |-------------Resources
     |-----iOS
     |-------Mantle.framework
     |---------Headers
     |---------Modules
     |---------_CodeSignature
     |-------ReactiveCocoa.framework
     |---------Headers
     |---------Modules
     |-----------ReactiveCocoa.swiftmodule
     |---------_CodeSignature
     |---Checkouts
     |-----libextobjc
     |-------Configuration
     |---------Base
     |-----------Configurations
     |-----------Targets
     |---------Mac OS X
     |---------iOS
     |-------Tests
     |-------extobjc
     |-------extobjc.xcodeproj
     |---------project.xcworkspace
     |---------xcshareddata
     |-----------xcschemes
     |-----xcconfigs
     |-------Base
     |---------Configurations
     |---------Targets
     |-------Mac OS X
     |-------iOS

    Carthage/Checkouts目录:从github获取的源代码

    Carthage/Build目录:编译出来的Framework二进制代码库

    4. 打开项目,在项目的某个Target -> Build Phases -> Link Library with Libraries,将Carthage/Build目录中希望导入的Framework库拖拽进去。

    5. 添加编译的额外脚本,点击“+” -> New Run Script Phase

    添加脚本

    /usr/local/bin/carthage copy-frameworks

    添加"Input Files"

    $(SRCROOT)/Carthage/Build/iOS/Mantle.framework
    $(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework

    6. 在项目中使用第三方库

    #import "AppDelegate.h"
    #import <ReactiveCocoa/ReactiveCocoa.h>
    #import <Mantle/Mantle.h>
    
    @interface AppDelegate ()
    
    @end
    
    @implementation AppDelegate
    
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
        
        NSArray *array = @[@"a",@"b"];
        NSLog(@"%@", [array mtl_firstObject]);
        
        return YES;
    }

    7. 运行项目,查看输出

    2015-05-06 11:14:56.858 CarthageProject[3733:227021] a

    大功告成!

    Carthage使用了一种极为精简的方式来管理第三方库,将源码编译成Framework的二进制文件,然后让开发人员来负责library的管理、导入等等。比起CocoaPods减少了对现有项目的侵入性,使用起来也挺方便。

  • 相关阅读:
    逆元
    C++快读
    最长单调上升子序列(LIS) O(nlogn)求法
    【简●解】巴厘岛的雕塑
    【简●解】学校食堂
    【简●解】[HNOI2005]星际贸易
    差分约束系统小结
    【简•解】花园
    最小生成树小结
    概率及期望DP小结
  • 原文地址:https://www.cnblogs.com/wdsunny/p/4479590.html
Copyright © 2011-2022 走看看