CocoaPods:specpec lint with subspec丢弃父规范?

时间:2015-12-13 02:21:38

标签: xcode cocoapods

我有一个名为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文件已消失!!

xcode project screenshot

(注意没有MeshPipe / Meshpipe。{h,m}在那里!)

如果我尝试从子规范明确地将依赖项添加到主规范(cerf.dependency('MeshPipe/Core')),CocoaPods告诉我从MeshPipe/CoreMeshPipe/Core存在循环依赖。

我也尝试在顶级根级规范中使用核心源,但是产生了同样的错误。

请帮助:为什么我的子规格不能依赖父规格?当然有一些我遗漏/错误配置的东西?

请参阅Full output of pod spec lint --verbose

1 个答案:

答案 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