首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CocoaPods:带子规范的规范线是否丢弃父规范?

CocoaPods:带子规范的规范线是否丢弃父规范?
EN

Stack Overflow用户
提问于 2015-12-13 10:21:38
回答 1查看 467关注 0票数 1

我有一个名为MeshPipe的库,我正试图为它写一个PodSpec。我在MacOSX10.11和Xcode7.1.1上使用CocoaPods 0.39.0。

这是一个只有三个文件的小库。它还有一个可选的部分,可以实现对我的另一个库Cerfing的支持。在我的podspec中,我希望只在主pod中包含核心部分,并且只有对Cerfing支持感兴趣的人才应该将Cerfing部分和依赖项拉入到他们的项目中。

为此,我编写了一个带有子规范的podspec:一个用于“核心”部分:

代码语言:javascript
复制
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‘部分:

代码语言:javascript
复制
s.subspec "CerfingMeshPipe" do |cerf|
  cerf.source_files  = "CerfingMeshPipeTransport/*.{h,m}"
  cerf.exclude_files = "CerfingMeshPipeTransport/main.m"
  cerf.dependency "Cerfing"
end

然后我告诉CocoaPods,大多数人只想要核心部分:

代码语言:javascript
复制
s.default_subspecs = "Core"

这个podspec不是lint,因为

代码语言:javascript
复制
- 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/CoreMeshPipe/Core的循环依赖项。

我也尝试过将core的源代码放在顶层的根级别规范中,但这也产生了同样的错误。

请帮帮忙:为什么我的子规范不能依赖于父规范?肯定有我遗漏了什么/配置错误了吗?

参见Full output of pod spec lint --verbose

EN

回答 1

Stack Overflow用户

发布于 2015-12-13 13:11:01

我想我一定是不小心在根规范而不是子规范上添加了对Core的依赖。我现在得到了其他错误,但不再得到丢失的头文件,也不再得到关于递归依赖的错误。子规范块现在看起来如下所示:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34247338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档