我有一个包含多个项目的工作空间。每个客户都有自己的项目,每个客户的项目都依赖于
接口库也依赖于Core。
每个项目都有两个目标。正常目标和测试目标,所以,
由于应用程序的每个方面目前都在大量开发,因此我将所有项目放在同一个工作区中,也放在同一个存储库中,因为随时可能会在结构的任何部分发生更改。
我想使用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的两倍代码。 任何想法如何解决这个问题?