Cocoapods拥有多个项目和共享库

时间:2015-06-15 09:55:44

标签: ios xcode cocoapods xcode-workspace

我有一个包含多个项目的工作空间。每个客户都有自己的项目,每个客户的项目都依赖于

  1. 核心项目:包含公共代码的静态库
  2. 接口项目:具有通用接口的静态库,即UIViewController代码
  3. 接口库也依赖于Core。

    Project dependency

    每个项目都有两个目标。正常目标和测试目标,所以,

    • Core,CoreTests
    • Interface,InterfaceTests
    • 客户,客户测试

    由于应用程序的每个方面目前都在大量开发,因此我将所有项目放在同一个工作区中,也放在同一个存储库中,因为随时可能会在结构的任何部分发生更改。

    我想使用CocoaPods来管理项目所依赖的依赖项。为了简单起见,假设我可以在每个测试目标上使用 OCMock ,在每个正常目标上使用 NewRelicAgent ,仅在Core目标上使用 Reachability

    Podfile如下所示:

    workspace 'CompanyWorkspace'
    xcodeproj 'Core/Core.xcodeproj'
    xcodeproj 'Interface/Interface.xcodeproj'
    xcodeproj 'Customer/Customer.xcodeproj'
    
    target :Core do
        platform :ios, '6.0'
        xcodeproj 'Core/Core.xcodeproj'
        pod 'NewRelicAgent', '~> 5.1'
        pod 'Reachability', '~> 3.2'
    end
    
    target :CoreTests do
        platform :ios, '6.0'
        xcodeproj 'Core/Core.xcodeproj'
        pod 'OCMock', '~> 3.1'
    end
    
    
    target :Interface do
        platform :ios, '6.0'
        xcodeproj 'Interface/Interface.xcodeproj'
        pod 'NewRelicAgent', '~> 5.1'
    end
    
    target :InterfaceTest do
        platform :ios, '6.0'
        xcodeproj 'Interface/Interface.xcodeproj'
        pod 'OCMock', '~> 3.1'
    end
    
    
    target :Customer do
        platform :ios, '7.0'
        xcodeproj 'Customer/Customer.xcodeproj'
        pod 'NewRelicAgent', '~> 5.1'
    end
    
    target :CustomerTests do
        platform :ios, '7.0'
        xcodeproj 'Customer/Customer.xcodeproj'
        pod 'OCMock', '~> 3.1'
    end
    

    我通过将静态库Core.a添加到Interface.a的构建阶段并通过更改用户头搜索路径来解决我的结构之间的依赖关系,以便找到标题。在Customer项目中,我将Core.a和Interface.a添加到构建阶段并修改了用户头搜索路径,以便从Core和Interface中找到代码。

    这种方法的问题是Core和Interface正确地构建了一个执行它们的测试但是当我尝试构建Customer.app时,我得到了许多重复符号错误。我相信这是因为CocoaPods中的target关键字会生成静态库,并且配置了依赖项,因此在构建Customer时,它会尝试包含Core的两倍代码。 任何想法如何解决这个问题?

0 个答案:

没有答案