Package.swift:目标、产品与依赖
了解 Package.swift 清单的结构,并定义库产品和可执行产品。
Package.swift:目标、产品与依赖 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。
Package.swift 概览
Package.swift 是 Swift 包管理器的清单文件。它声明包名称、Swift 版本、目标、产品和依赖项。
import PackageDescription
let package = Package(
name: "MyLibrary",
platforms: [.iOS(.v16), .macOS(.v13)],
products: [],
dependencies: [],
targets: []
)目标
目标是构建的基本单元:.target(库或可执行代码)和 .testTarget(测试代码)。
.target(
name: "MyFeature",
dependencies: [],
path: "Sources/MyFeature"
),
.testTarget(
name: "MyFeatureTests",
dependencies: ["MyFeature"],
path: "Tests/MyFeatureTests"
)产品
产品定义包向使用者公开的内容:.library 或 .executable。
.library(
name: "MyFeature",
targets: ["MyFeature"]
),
.executable(
name: "MyTool",
targets: ["MyTool"]
)动态库与静态库
指定使用 .dynamic 或 .static 链接。静态链接是默认方式,开销更小;动态链接支持在模块之间共享。
.library(
name: "MySDK",
type: .dynamic,
targets: ["MySDK"]
)外部依赖
使用 URL 和版本要求声明远程包依赖。
.package(url: "https://github.com/apple/swift-algorithms", from: "1.0.0"),
.package(url: "https://github.com/pointfreeco/swift-composable-architecture", exact: "1.0.0")在目标中使用外部依赖
使用 .product(name:package:) 在目标依赖中引用外部包产品。
.target(
name: "MyApp",
dependencies: [
.product(name: "Algorithms", package: "swift-algorithms"),
.product(name: "ComposableArchitecture", package: "swift-composable-architecture")
]
)本地包依赖
引用本地包目录,以支持单体仓库配置,或迭代开发自己拥有的包。
.package(path: "../MySharedLibrary"),Swift 版本要求
在 Package.swift 顶部设置最低 Swift 工具版本,并在包初始化器中设置平台要求。
// swift-tools-version: 5.9
import PackageDescription
let package = Package(
name: "MyPackage",
platforms: [.iOS(.v17)],
// ...
)目标中的资源
使用 resources: 参数包含非代码资源(图像、JSON、本地化文件)。
.target(
name: "MyFeature",
resources: [
.process("Resources"),
.copy("Fixtures/test_data.json")
]
)构建设置与 C 目标
目标可以配置 C 标志和 Swift 设置,这对于封装 C 库或执行条件编译很有用。
.target(
name: "CWrapper",
cSettings: [.headerSearchPath("include")],
swiftSettings: [.define("DEBUG", .when(configuration: .debug))]
)包解析
运行 swift package resolve 获取依赖项。解析后的版本存储在 Package.resolved 中。
// Commands:
// swift package resolve – fetch dependencies
// swift package update – update to latest compatible versions
// swift build – build the package
// swift test – run tests快速检查
Package.swift 中的哪个元素定义了包向依赖它的其他包或应用公开的内容?
课程回顾
Package.swift:targets 是构建单元,products 将其公开给使用者,dependencies 引用远程或本地包。使用 .product(name:package:) 链接外部目标。在团队项目中提交 Package.resolved,以锁定版本。
用 AI 导师学习 Swift — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 122
- 课程
- 409
常见问题解答
「Package.swift:目标、产品与依赖」课时是免费的吗?
是的 — 「Package.swift:目标、产品与依赖」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。
「Package.swift:目标、产品与依赖」这节课中我会学到什么?
了解 Package.swift 清单的结构,并定义库产品和可执行产品。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Swift Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「Package.swift:目标、产品与依赖」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Swift Academy 课中编写并运行代码吗?
能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- Package.swift:目标、产品与依赖
- 本地包与功能模块
- 二进制目标与 XCFramework
- 版本管理、冲突解决与 Swift 插件