【问题标题】:Meaning of each Cocoapods build target每个 Cocoapods 构建目标的含义
【发布时间】:2015-07-01 18:46:12
【问题描述】:

Cocoapods 工作区中每个目标的用途是什么?

当我通过“pod lib create Foo”创建一个新的 CocoaPods 库时,我预计只有两个目标:一个用于构建我的库,一个用于构建我的示例。

但是生成的 xcworkspace 一共有四个目标:

  • 项目Foo
    1. 目标 Foo_Tests
  • 项目 Pods
    1. 目标 Pods-Foo_Tests
    2. 目标 Pods-Foo_Tests-Foo
    3. 目标 Pods-Foo_Tests-Foo-Foo

这些目标的含义是什么?

(我没有选择演示应用程序、基于视图的测试或测试框架。)

【问题讨论】:

    标签: ios xcode cocoapods xcode-workspace


    【解决方案1】:

    您的工作区中有 2 个项目,一个是您的,另一个是 cocoapods,cocoapods 为您在 Podfile 中添加的每个 pod 添加新目标。例如,假设这是您的 Podfile:

    platform :ios, '7.0'
    
    pod 'AFNetworking', '~> 2.5.4'
    pod 'BPXLUUIDHandler'
    

    您应该在您的 pod 项目的目标列表中看到如下内容:

    但这是什么意思?

    cocoapods 管理每个 pod 的所有目标。例如,如果您在 pod 项目中选择 AFNwtworking 目标,您必须看到如下内容:

    但是例如 cocoapods 是如何知道像上面那样添加“将二进制文件与库链接”框架的?好吧,请检查AFNetworking's podspec file

     s.public_header_files = 'AFNetworking/*.h'
      s.source_files = 'AFNetworking/AFNetworking.h'
    
      s.subspec 'Serialization' do |ss|
        ss.source_files = 'AFNetworking/AFURL{Request,Response}Serialization.{h,m}'
        ss.ios.frameworks = 'MobileCoreServices', 'CoreGraphics'
        ss.osx.frameworks = 'CoreServices'
      end
    
      s.subspec 'Security' do |ss|
        ss.source_files = 'AFNetworking/AFSecurityPolicy.{h,m}'
        ss.frameworks = 'Security'
      end
    
      s.subspec 'Reachability' do |ss|
        ss.source_files = 'AFNetworking/AFNetworkReachabilityManager.{h,m}'
        ss.frameworks = 'SystemConfiguration'
      end
    

    正如您在上面看到的那样,“ss.ios.frameworks”行描述了那里发生的事情。

    希望现在一切都清楚了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多