示例
完整示例
// swift-tools-version:5.9
import PackageDescription
let package = Package(
name: "MyComprehensivePackage", // 包名称
defaultLocalization: "en", // 默认的本地化语言
platforms: [ // 指定支持的平台及最低版本
.iOS("14.0"),
.macOS("12.0"),
.tvOS("15.0"),
.watchOS("8.0")
],
products: [ // 定义包的输出产品
.library(
name: "CoreLibrary",
targets: ["CoreTarget"]
),
.library(
name: "UILibrary",
targets: ["UITarget"]
),
.executable(
name: "MyExecutable",
targets: ["ExecutableTarget"]
)
],
dependencies: [ // 定义包的外部依赖
.package(
url: "https://github.com/apple/swift-argument-parser.git",
from: "1.2.0"
),
.package(
url: "https://github.com/Quick/Quick.git",
.upToNextMajor(from: "4.0.0")
),
.package(
url: "https://github.com/Realm/realm-swift.git",
.exact("10.39.0")
)
],
targets: [ // 定义包的构建单元(targets)
// 主库 Target
.target(
name: "CoreTarget",
dependencies: [
.product(name: "RealmSwift", package: "realm-swift")
],
path: "Sources/Core",
exclude: ["OldFiles"],
resources: [
.process("Resources/Config.json")
],
swiftSettings: [
.define("ENABLE_LOGGING"),
.unsafeFlags(["-enable-library-evolution"], .when(configuration: .release))
]
),
// UI 相关的 Target
.target(
name: "UITarget",
dependencies: [
"CoreTarget"
],
path: "Sources/UI",
resources: [
.process("Assets.xcassets"),
.copy("Static/License.txt")
]
),
// 命令行工具 Target
.executableTarget(
name: "ExecutableTarget",
dependencies: [
"CoreTarget",
.product(name: "ArgumentParser", package: "swift-argument-parser")
],
path: "Sources/Executable"
),
// 测试 Target
.testTarget(
name: "CoreTests",
dependencies: [
"CoreTarget",
"Quick"
],
path: "Tests/CoreTests",
resources: [
.process("TestResources/TestData.json")
]
)
],
swiftLanguageVersions: [ // 指定支持的 Swift 语言版本
.v5
]
)功能详解
目录结构对应示例
使用场景
Last updated