在cocoapods podspec文件中定义标题搜索路径

Den*_*Loh 8 xcode specifications header cocoapods

我对我创建的框架的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
Run Code Online (Sandbox Code Playgroud)

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

我的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
Run Code Online (Sandbox Code Playgroud)

目前,没有指令定义core-api的头位置.当我这样做时,pod lib lint我得到错误,找不到相应的core-api标头.

我瞎搞用ss.header_dir,ss.header_mapping_dir,s.xcconfigUSER_HEADER_SEARCH_PATH,但他们没有为我工作.

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

EDIT1:

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

我的spec文件现在看起来像这样:

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
Run Code Online (Sandbox Code Playgroud)

但是,在这种情况下,如果我想使用subspec,则仅添加模块的标头.如果我只想使用module1和2,则缺少其他模块的标头.core-api headers文件夹必须始终可供框架中的所有模块使用.我怎么做?

ERU*_*ERU 3

/sf/answers/2335153621/

正确的 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
Run Code Online (Sandbox Code Playgroud)