我正在将CocoaPods用于具有以下结构的项目:
Example/
Example/PublicUmbrellaHeader.h
Example/PrivateHeaderForComponent1.h
Example/PrivateHeaderForComponent2.h
Example.podspec
Tests/
Tests/Podfile
Tests/Tests/UnitTestForPrivateComponent1.m
Tests/Tests/UnitTestForPrivateComponent2.m
pod 'Example', :path => '../'
这并不罕见。例如,AFNetworking遵循类似的结构。 的不同之处在于需要仅将一组标题暴露给单元测试。
然而,我无法找到一种直截了当的方法来实现这一目标。该
以下方法有效,但在需要手术的意义上它并不干净
公众Podspec
。
s.public_header_files = 'Example/PublicUmbrellaHeader.h'
s.default_subspec = 'Public'
s.subspec 'Public'
s.subspec 'Tests' do |ss|
ss.public_header_files = 'Example/*.h'
end
pod 'Example', :path => '../'
pod 'Example/Tests', :path => '../'
有更简单的方法吗?如果没有,是因为我想要完成的事情有什么问题,或者仅仅是因为CocoaPods不适合这个用例呢?
答案 0 :(得分:3)
您可以直接修改Example项目中的测试目标,以在Header搜索路径中包含私有标头。只需进入单元测试目标,然后在搜索路径 - >>下标题搜索路径,添加:
$(inherited) "${PODS_ROOT}/Headers/Private/Example"
在单元测试文件中,您可以包含如下标题:
#import "PrivateHeaderForComponent1.h"
#import "PrivateHeaderForComponent2.h"
而不是典型的#import <Example/PrivateHeaderForComponent1.h>
缺点是您正在假设CocoaPods如何布置Pods目录中的文件,但我宁愿这样做也不要改变我的公共podspec文件。