Mar*_*inh 9 ios swift swift-package-manager swiftpm
A我有一个包含两个目标(和)的框架,B其文件结构如下:
FooFramework
|__ A
|__ Foo.swift
|__ Bar.swift
|__ Foobar.swift
|__ B
|__ Barfoo.swift
Run Code Online (Sandbox Code Playgroud)
BA基本上有的源的子集(其中B被设置为目标),例如B仅使用Foo.swift和Bar.swift,但不使用Foobar.swift。
现在我有一个应用程序需要框架A和B(在单独的目标中)。
此时我不确定如何设置Package.swift文件以使此设置起作用。每当我打开Package.swiftinXcode并尝试构建框架时B,编译器都会抱怨 in 中缺少类型Barfoo.swift,因为它们包含在Bar.swift.
这就是我设置Package.swift文件的方式:
// swift-tools-version:5.3
import PackageDescription
let package = Package(
name: "Framework",
platforms: [
.iOS(.v11),
.macOS(.v10_15)
],
products: [
.library(
name: "A",
targets: ["A"]),
.library(
name: "B",
targets: ["B"]),
],
dependencies: [
.package(name: "Dependency", url: "https://github.com/...", .exact("1.0.0"))
],
targets: [
.target(
name: "A",
dependencies: [
"Dependency",
],
path: "A",
exclude: [
"Info.plist",
],
resources: [
.process("fonts"),
]
),
.target(
name: "B",
dependencies: ["A"],
path: "B",
exclude: [
"Info.plist",
],
resources: [
.process("../A/fonts"),
]),
.testTarget(
name: "ATests",
dependencies: ["A"],
path: "ATests",
exclude: [
"Info.plist"
]
)
]
)
Run Code Online (Sandbox Code Playgroud)
相关来源,但不幸的是没有帮助: