我有一个名为MeshPipe的库,我正在尝试为其编写PodSpec。我在Mac OS X 10.11上使用CocoaPods 0.39.0和Xcode 7.1.1。
这是一个只有三个文件的小型库。它还有一个可选部分,它实现了对我的另一个库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
并打开生成的项目,项目中只有子规格源可用,并且主MeshPipe文件已消失!!
(注意没有MeshPipe / Meshpipe。{h,m}在那里!)
如果我尝试从子规范明确地将依赖项添加到主规范(cerf.dependency('MeshPipe/Core')
),CocoaPods告诉我从MeshPipe/Core
到MeshPipe/Core
存在循环依赖。
我也尝试在顶级根级规范中使用核心源,但是产生了同样的错误。
请帮助:为什么我的子规格不能依赖父规格?当然有一些我遗漏/错误配置的东西?
答案 0 :(得分:0)
我认为我必须在根规范而不是子规范上意外添加了对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"
end