xcode - 在 cocoapods podspec 文件中定义 header 搜索路径

标签 xcode header cocoapods specifications

我对我创建的框架的 podspec 文件的定义有疑问。我有以下文件结构:

/
|-- module1/<source files>
|-- module2/<source files>
...
|-- moduleN/<source files>
|-- core-api/
|    |-- module1/<header files>
|    |-- module2/<header files>
|    ...
|    +-- moduleN/<header files>
|-- framework.podspec
+-- framework.xcodeproj

在 XCode 中,我添加了 $(SRCROOT)/core-apiUSER_HEADER_SEARCH_PATHS以便 Xcode 可以正确找到公共(public)头文件。

我的 podspec 文件如下所示:
s.default_subspec = 'module1'

s.subspec 'module1' do |ss|
  ss.source_files               = "module1/**/*.{h,m}"
end

s.subspec 'module2' do |ss|
  ss.source_files               = "module2/**/*.{h,m}"
end

...

s.subspec 'moduleN' do |ss|
  ss.source_files               = "moduleN/**/*.{h,m}"
end

目前,没有定义 core-api 头文件位置的指令。当我做 pod lib lint我收到未找到相应 core-api header 的错误。

我在玩弄 ss.header_dir , ss.header_mapping_dir , s.xcconfigUSER_HEADER_SEARCH_PATH ,但没有一个对我有用。

如何正确定义 podspec 文件中头文件的位置?

EDIT1:

我从头开始重新创建了规范文件,发现似乎有必要在每个子规范中添加 core-api 头文件。

我的规范文件现在看起来像这样:
s.default_subspec = 'module1'

s.subspec 'module1' do |ss|
  ss.public_header_files        = "core-api/module1/*.h"
  ss.source_files               = "module1/**/*.{h,m}"
end

s.subspec 'module2' do |ss|
  ss.public_header_files        = "core-api/module1/*.h"
  ss.source_files               = "module2/**/*.{h,m}"
end

...

s.subspec 'moduleN' do |ss|
  ss.public_header_files        = "core-api/module1/*.h"
  ss.source_files               = "moduleN/**/*.{h,m}"
end

但是,在这种情况下,如果我想使用子规范,只会添加模块的标题。如果我只想使用模块 1 和模块 2,则缺少其他模块的 header 。 core-api headers 文件夹必须始终可供框架中的所有模块使用。我怎么做?

最佳答案

https://stackoverflow.com/a/33359337/4063462

正确的 podspec 文件应如下所示:

s.default_subspec = 'module1'

s.subspec 'module1' do |ss|
  ss.xcconfig = { 'USER_HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/core-api/module1/*.h"' }
  ss.source_files               = "module1/**/*.{h,m}"
end

s.subspec 'module2' do |ss|
  ss.xcconfig = { 'USER_HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/core-api/module1/*.h"' }
  ss.source_files               = "module2/**/*.{h,m}"
end

...

s.subspec 'moduleN' do |ss|
  ss.xcconfig = { 'USER_HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/core-api/module1/*.h"' }
  ss.source_files               = "moduleN/**/*.{h,m}"
end

关于xcode - 在 cocoapods podspec 文件中定义 header 搜索路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21132540/

相关文章:

xcode - Xcode 11 beta 4错误:命令CompileSwiftSources失败,退出代码为非零

ios - 有条件地链接 iOS 上的库

tomcat - 使用嵌入式 tomcat 更改服务器 header

go - 如何在 Go 中包含来自第三方包的 header ?

ios - 可以在 cocoapods 中跳过特定版本的 pod

ios - EEXIST - 文件存在于工作区/Pod

iphone - 将数组中的值设置为零

xcode - cocoa : How to intercept a right click on a free (no icon) area of the desktop?

ios - 我的应用程序内存问题警告,但应用程序不会消耗大量内存

delphi - WinInet HttpQueryInfo 可以返回原始字节吗? (带有 unicode 字符的 HTTP header )