2015-12-13 47 views
0

我有一個名爲MeshPipe的庫,我正在嘗試編寫PodSpec。我在Xcode 7.1.1上使用Mac OS X 10.11上的CocoaPods 0.39.0。CocoaPods:spec lint與subspec丟棄父規格?

這是一個只有三個文件的小型圖書館。它還有一個可選部分,用於支持我的另一個庫,Cerfing。在我的podspec中,我只想在主窗格中包含核心部分,只有對Cerfing支持感興趣的人才能將Cerfing部件和依賴項拉到他們的項目中。

爲此,我寫與subspecs一個podspec:一爲 「核心」 部分:

s.subspec "Core" do |core| 
    core.source_files = "MeshPipe/*.{h,m}" 
    core.exclude_files = "MeshPipe/main.m" 
    core.public_header_files = "MeshPipe/MeshPipe.h" 
end 

,一個用於可選的 'cerfing' 部分:

s.subspec "CerfingMeshPipe" do |cerf| 
    cerf.source_files = "CerfingMeshPipeTransport/*.{h,m}" 
    cerf.exclude_files = "CerfingMeshPipeTransport/main.m" 
    cerf.dependency "Cerfing" 
end 

而且那麼我告訴CocoaPods,大多數人只會想要核心部分:

s.default_subspecs = "Core" 

這個podspec的確會不掉毛,因爲

- NOTE | [MeshPipe/CerfingMeshPipe] xcodebuild: 
    MeshPipe/CerfingMeshPipeTransport/CerfingMeshPipeTransport.h:10:9: 
    fatal error: 'MeshPipe/MeshPipe.h' file not found 

如果我pod spec lint --no-clean --verbose並打開生成的項目中,只有subspec源項目中可用,主要MeshPipe文件都不見了!

xcode project screenshot

(注意沒有MeshPipe/Meshpipe的。{H,M}在那裏!)

如果我嘗試顯式地從subspec添加一個依賴於主規範(cerf.dependency('MeshPipe/Core')) CocoaPods告訴我,存在從MeshPipe/CoreMeshPipe/Core的循環依賴關係。

我也試過在頂層根目錄規範中有核心的源代碼,但是產生了相同的錯誤。

請幫助:爲什麼我的subspec不能依賴父規範?當然,有一些我錯過/錯誤配置?

請參閱Full output of pod spec lint --verbose

回答

0

我想我一定是無意中在根規範上添加了對Core的依賴關係,而不是subspec。我現在得到其他錯誤,但不再會丟失頭文件,也不會出現遞歸依賴關係的錯誤。 subspec塊現在看起來像:

s.subspec "CerfingMeshPipe" do |cerf| 
    cerf.source_files = "CerfingMeshPipeTransport/*.{h,m}" 
    cerf.exclude_files = "CerfingMeshPipeTransport/main.m" 
    cerf.dependency "Cerfing" 
    cerf.dependency "MeshPipe/Core" # was s.dependency "MeshPipe/core" 
end