用Cocoapodspipe理多个目标的依赖关系

我刚开始修改cocoapods来pipe理我的iOS项目的依赖关系。 目前我正在尝试使用GHIOSUnit集成unit testing。 我遵循了他们的所有指示,并尝试了他们的样品testing,这一切都像魅力。

项目设置1在这里输入图像说明

但是,当我开始使用我的实际项目文件进行testing时,问题就开始了。

我正在使用AFNetworking客户端服务器通信,每当我访问我的sharedClient所谓'CRLClient',AFHTTPClient的包装,它给了我未定义的符号错误。

Undefined symbols for architecture armv7: "_OBJC_METACLASS_$_AFHTTPClient", referenced from: _OBJC_METACLASS_$_CRLClient in CRLClient.o "_OBJC_CLASS_$_AFJSONRequestOperation", referenced from: objc-class-ref in CRLClient.o "_OBJC_CLASS_$_AFHTTPClient", referenced from: _OBJC_CLASS_$_CRLClient in CRLClient.o ld: symbol(s) not found for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation) 

用于pipe理依赖关系的pod文件如下所示

 workspace 'Storyboards.xcworkspace' platform :ios, '5.0' pod 'AFNetworking', '1.1.0' target :UnitTests, :exclusive => true do pod 'GHUnitIOS', '0.5.6' end 

实际的项目目标完美地与AFNetworkingbuild立良好的合作关系。

PS我需要将所有要testing的文件添加到UnitTest目标中。 那么在构build阶段添加“目标依赖”是什么呢?

在这里输入图像说明在这里输入图像说明

简而言之,

  1. 如何分享不同目标之间的共同依赖关系?
  2. 如果我仍然需要将每个文件添加到新目标,那么添加目标依赖关系真的会做什么?

通过使用

 target :UnitTests, :exclusive => true do pod 'GHUnitIOS', '0.5.6' end 

你说的唯一的库你想链接到UnitTests目标是GHUnit主要是说你希望AFNetworking连接以及。 问题是它看起来像你也导入你的AFHTTPClient子类到UnitTests ,它不能find它试图链接到的AFNetworking组件。

要解决这个问题,你应该可以删除独占的电话

 target :UnitTests do pod 'GHUnitIOS', '0.5.6' end 

有了这个,你将GHUnit只链接到你的UnitTests目标,但将AFNetworking链接到两个。 “除非给出:exclusive => true选项,否则目标将默认包含在块之外定义的依赖项。” (从这里 )