我在弄清楚这个问题时真是恶魔般。我知道如何使用CocoaPods做到这一点,但SPM似乎让我变得更好。 关于这个特定问题,我还无法从the official SPM docs中找出任何问题。
我正在开发一个Swift框架,该框架旨在嵌入到应用程序和应用程序(iOS和OSX)中。我在xcodeproj中有几个目标,每个平台都有目标。我可以运行xcodebuild并单独进行操作,也可以使用CocoaPods按需生成它们。
我似乎无法让SPM做同样的事情。它仅固执地构建OSX版本,而且我看不到任何命令可以重新定向相同的源文件。
使用相同的源文件非常重要,而不是使用同一文件的两个副本,因此我的所有目标都需要指向相同的目录。
这是Package.swift文件现在的样子:
// swift-tools-version:4.2
import PackageDescription
let package = Package(
name: "WhiteDragon",
products: [
.library(
name: "WhiteDragon",
targets: ["WhiteDragon"]
),
],
targets: [
.target(
name: "WhiteDragon",
dependencies: [],
path: "WhiteDragon/Classes"
),
.testTarget(
name: "WhiteDragonTests",
dependencies: ["WhiteDragon"],
path: "WhiteDragonTests"
),
],
swiftLanguageVersions: [.v4_2]
)
我正在继续挖掘,并尝试各种荒唐的想法,但我还没有。我对SPM还是很陌生,我发现几乎每个人都只是在讨论使用它来提取依赖项,或者他们使用与init相同的原始小结构。
我很喜欢RTFM,但是到目前为止,我有点失望,并且很高兴能被引导到一个可以给我答案的“ M”。
非常感谢!
更新:以下是podspec,它为我提供了我所需要的内容(对特里爵士进行了一些修改):
Pod::Spec.new do |spec|
spec.name = 'WhiteDragon'
spec.summary = 'A Cocoa Framework that Provides an Application-Level Interaction With a BAOBAB Server.'
spec.description = 'The White Dragon Cocoa Framework is a Swift shared framework designed to allow easy development of iOS/MacOS RVP apps. It completely abstracts the connection to BAOBAB Servers, including administration functions.'
spec.version = '1.0.0.1000'
spec.ios.deployment_target = '11.0'
spec.osx.deployment_target = '10.11'
spec.homepage = '<MILLENIUM HAND AND SHRIMP>'
spec.social_media_url = 'https://twitter.com/BUGRIT'
spec.author = { '<MUMBLE, MUMBLE>' }
spec.documentation_url = '<BUGRIT>'
spec.license = { :type => 'MIT', :file => 'LICENSE.txt' }
spec.source = { :git => '<GASPODE!>', :tag => spec.version.to_s }
spec.source_files = 'WhiteDragon/Classes/**/*'
end
答案 0 :(得分:2)
当前SPM
不支持iOS
目标。
目前,对于依赖UIKit尚无明确支持, AppKit等,尽管如果导入这些模块应该可以 存在于正确的系统位置。我们将添加明确的支持 用于将来的系统依赖性。 请注意,此时 软件包管理器不支持iOS,watchOS或tvOS平台。