簡體   English   中英

多目標庫在 SPM 上運行良好,但在使用 CocoaPods 構建時因“沒有此類模塊”而失敗

[英]Multi-target library works fine with SPM, but fails with “no such module” when built with CocoaPods

我正在將 CocoaPods 支持添加到以前只能通過 SPM 獲得的 Swift 庫。 該庫由兩個目標組成,其中一個依賴於另一個。

MyLibrary的源文件中,我import MyLibraryProtocols ,當使用 SPM 集成庫時它工作得很好。 但是,驗證 CocoaPods podspec ( pod spec lint ) 失敗並出現以下錯誤:

- ERROR | [MyLibrary/MyLibrary] xcodebuild:  MyLibrary/Sources/MyLibrary/<REDACTED>.swift:9:8: error: no such module 'MyLibraryProtocols'

似乎單獨的子規范在集成和構建時最終會出現在一個目標中,因此不需要顯式import ,而且也不支持。 (我可能弄錯了,因為我不是 CocoaPods 專家。)如果我刪除了import ,庫毫無疑問會停止使用 SPM。

如何將我的代碼保存在單獨的目標中,其中一個依賴於另一個,並添加對 CocoaPods 的支持?

這是聲明目標/子規范的方式,以供參考:

targets: [
    .target(
        name: "MyLibrary",
        dependencies: ["MyLibraryProtocols"]
    ),
    .target(name: "MyLibraryProtocols"),
]
s.default_subspec = "MyLibrary"

s.subspec "MyLibrary" do |library|
  library.source_files = "Sources/MyLibrary/**/*.{swift}"
  library.dependency "MyLibrary/MyLibraryProtocols"
end

s.subspec "MyLibraryProtocols" do |protocols|
  protocols.source_files = "Sources/MyLibraryProtocols/**/*.{swift}"
end

到目前為止我找到的解決方案是明確檢查庫是否使用 CocoaPods 構建,並帶有編譯器指令,如果不是,則僅包含import s:

#if !COCOAPODS
import MyLibraryProtocols
#endif

COCOAPODS標志會自動添加到構建中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM