pod lib lint投诉header_mappings_dir之外的头文件

时间:2017-07-14 12:26:02

标签: header cocoapods lint lib

我正在为开源库构建一个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很高兴并且项目仍在编译中。但感觉不对,因为该文件是项目的一部分。

谢谢!

1 个答案:

答案 0 :(得分:1)

我会自己回答。

将podspec推送到git服务器时,exclude_files解决方法不起作用。

问题实际上是一种误解:不要使用其他路径规范来排除您在source_files行中明确指定的文件!

解决方案是明确地只将文件添加到source_files行,它们是公共标题的一部分,或者应该在Xcode中获得编译规则。

通过

添加任何其他文件(应包含但不能自行编译的header_mappings_dir和.c文件之外的标题)
s.preserve_paths = 'Foo/Classes/src/**/*'

现在一切正常。