1
我試圖將我創建的Pod翻譯爲Swift Package Manager(SPM),但不知道如何將CocoaPods的subspec
功能轉換爲SPM。我知道SPM提供了多個目標,但afaik與subspec
功能不同。Swift包中有類似於CocoaPods中的子模塊
比方說,我有以下podspec:
Pod::Spec.new do |s|
s.name = 'Example'
...
# main spec
s.subspec 'Main' do |ss|
ss.source_files = 'Source/Main/**/*.swift'
ss.pod_target_xcconfig = {
'SWIFT_ACTIVE_COMPILATION_CONDITIONS[config=Debug]' => 'DEBUG'
}
# dependencies
ss.dependency 'CocoaLumberjack/Swift'
end
# coredata
s.subspec 'CoreData' do |ss|
ss.source_files = 'Source/CoreData/**/*.swift'
ss.pod_target_xcconfig = {
'SWIFT_ACTIVE_COMPILATION_CONDITIONS[config=Debug]' => 'EXAMPLE_WITH_COREDATA',
'SWIFT_ACTIVE_COMPILATION_CONDITIONS' => 'EXAMPLE_WITH_COREDATA'
}
# dependencies
ss.dependency 'Example/Core'
ss.dependency 'MagicalRecord', '> 2.3'
end
end
如果開發者依賴於CoreData
subspec,它會自動包含Main
subspec,還設置吊艙一些標誌。這樣,Main
pod知道可用的額外功能,並將其集成。從Main
subspec代碼簡單的例子:
func someFunction() {
// ... some code ...
#if EXAMPLE_WITH_COREDATA
callExtraCoreDataRelatedMethod()
#endif
// ... some code ...
}
嗯,沒關係。行爲放在一邊(模塊的),依賴關係如何?我如何在我的包中定義多個模塊,並讓用戶只包含他們想要的模塊? SPM的參考文檔描述了多個目標,但不是如何依賴這些目標之一。 – djbe
這還沒有實現,儘管我們意識到它的需要,並正在積極研究如何看待它。 –
錯誤跟蹤器或郵件列表線程中是否存在問題? – djbe