我正在为开源库构建一个pod,并且必须保留公共头文件的目录结构。 简化的例子如下:
include/header1.h
include/foo/header2.h
src/file.c
src/internal.h
include
目录包含公共标题。
我的podspec包含:
s.public_header_files = 'Foo/Classes/include/**/*'
s.private_header_files = 'Foo/Classes/src/internal.h'
s.header_mappings_dir = 'Foo/Classes/include'
Example
项目编译正常,Pods/Headers/Public/Foo
目录包含与原始include
目录相同的结构。
仍然pod lib lint Foo.podspec --use-libraries
给了我这个错误:
- ERROR | [iOS] header_mappings_dir: There are header files outside of the header_mappings_dir (Foo/Classes/src/internal.h)
好。是。确实。但为什么这是一个错误?我完全没有这种情况。
我自己找到了一个解决方案,但我不确定,如果它是正确的。
s.exclude_files = 'Foo/Classes/src/internal.h'
这使得linter很高兴并且项目仍在编译中。但感觉不对,因为该文件是项目的一部分。
谢谢!
答案 0 :(得分:1)
我会自己回答。
将podspec推送到git服务器时,exclude_files
解决方法不起作用。
问题实际上是一种误解:不要使用其他路径规范来排除您在source_files
行中明确指定的文件!
解决方案是明确地只将文件添加到source_files
行,它们是公共标题的一部分,或者应该在Xcode中获得编译规则。
通过
添加任何其他文件(应包含但不能自行编译的header_mappings_dir
和.c文件之外的标题)
s.preserve_paths = 'Foo/Classes/src/**/*'
现在一切正常。