2017-07-14 233 views
0

我正在爲開源庫構建pod,並且必須保留公共頭文件的目錄結構不變。 簡化的例子是這樣的:pod lib lint關於header_mappings_dir之外的頭文件的投訴

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項目編譯罰款和​​目錄包含相同的結構與原始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

我會自己回答。

當將podspec推送到git服務器時,exclude_files解決方法無法正常工作。

問題實際上是一個誤解:不要使用其他路徑規範來排除您在source_files行中指定的文件!

解決方法是明確地只將文件添加到source_files行,它們是公共頭文件的一部分,或者應該在Xcode中獲得編譯規則。

任何其他文件(應包括在內,但對自己沒有編譯header_mappings_dir和.c文件以外的頭)加入通過

s.preserve_paths = 'Foo/Classes/src/**/*' 

現在一切正常。