我对我创建的框架的podspec文件的定义存在问题。我有以下文件结构:在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
在Xcode我添加$(SRCROOT)/core-api
到USER_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
目前,没有任何指令,在此定义了核心API的报头位置。当我做pod lib lint
我得到错误,找不到相应的core-api标题。
我正在搞ss.header_dir
,ss.header_mapping_dir
,s.xcconfig
与USER_HEADER_SEARCH_PATH
,但他们都没有为我工作。
如何正确定义podspec文件中头文件的位置?
EDIT1:
我从头开始重新创建规范文件,发现,它似乎有必要添加在每个子规范的核心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
然而,在这种情况下,模块的头只添加,如果我想使用subspec。如果我只想使用module1和2,则缺少其他模块的标题。 core-api头文件夹必须始终可用于框架中的所有模块。我怎么做?