我有一个名为MeshPipe的库,我正试图为它写一个PodSpec。我在MacOSX10.11和Xcode7.1.1上使用CocoaPods 0.39.0。
这是一个只有三个文件的小库。它还有一个可选的部分,可以实现对我的另一个库Cerfing的支持。在我的podspec中,我希望只在主pod中包含核心部分,并且只有对Cerfing支持感兴趣的人才应该将Cerfing部分和依赖项拉入到他们的项目中。
为此,我编写了一个带有子规范的podspec:一个用于“核心”部分:
s.subspec "Core" do |core|
core.source_files = "MeshPipe/*.{h,m}"
core.exclude_files = "MeshPipe/main.m"
core.public_header_files = "MeshPipe/MeshPipe.h"
end一个用于可选的'cerfing‘部分:
s.subspec "CerfingMeshPipe" do |cerf|
cerf.source_files = "CerfingMeshPipeTransport/*.{h,m}"
cerf.exclude_files = "CerfingMeshPipeTransport/main.m"
cerf.dependency "Cerfing"
end然后我告诉CocoaPods,大多数人只想要核心部分:
s.default_subspecs = "Core"这个podspec不是lint,因为
- NOTE | [MeshPipe/CerfingMeshPipe] xcodebuild:
MeshPipe/CerfingMeshPipeTransport/CerfingMeshPipeTransport.h:10:9:
fatal error: 'MeshPipe/MeshPipe.h' file not found如果我pod spec lint --no-clean --verbose并打开生成的项目,那么该项目中只有subspec源代码可用,而主MeshPipe文件却不见了!!

(注意这里没有MeshPipe.{h,m}!)
如果我试图显式地将子规范中的依赖项添加到主规范(cerf.dependency('MeshPipe/Core'))中,CocoaPods会告诉我存在一个从MeshPipe/Core到MeshPipe/Core的循环依赖项。
我也尝试过将core的源代码放在顶层的根级别规范中,但这也产生了同样的错误。
请帮帮忙:为什么我的子规范不能依赖于父规范?肯定有我遗漏了什么/配置错误了吗?
发布于 2015-12-13 13:11:01
我想我一定是不小心在根规范而不是子规范上添加了对Core的依赖。我现在得到了其他错误,但不再得到丢失的头文件,也不再得到关于递归依赖的错误。子规范块现在看起来如下所示:
s.subspec "CerfingMeshPipe" do |cerf|
cerf.source_files = "CerfingMeshPipeTransport/*.{h,m}"
cerf.exclude_files = "CerfingMeshPipeTransport/main.m"
cerf.dependency "Cerfing"
cerf.dependency "MeshPipe/Core" # was s.dependency "MeshPipe/core"
endhttps://stackoverflow.com/questions/34247338
复制相似问题