<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>3.1 为 Swift 包添加依赖 on 编程那些事儿</title><link>https://before80.github.io/prgms/Swift/SwiftPM/dependencies/3.1-AddingDependencies/</link><description>Recent content in 3.1 为 Swift 包添加依赖 on 编程那些事儿</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sun, 13 Sep 2026 18:20:56 +0800</lastBuildDate><atom:link href="https://before80.github.io/prgms/Swift/SwiftPM/dependencies/3.1-AddingDependencies/index.xml" rel="self" type="application/rss+xml"/><item><title>3.1.1 解析与更新依赖</title><link>https://before80.github.io/prgms/Swift/SwiftPM/dependencies/3.1-AddingDependencies/3.1.1-ResolvingPackageVersions/</link><pubDate>Fri, 11 Sep 2026 21:45:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/SwiftPM/dependencies/3.1-AddingDependencies/3.1.1-ResolvingPackageVersions/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://docs.swift.org/latest/documentation/packagemanagerdocs/resolvingpackageversions/"&gt;https://docs.swift.org/latest/documentation/packagemanagerdocs/resolvingpackageversions/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="311-解析与更新依赖"&gt;3.1.1 解析与更新依赖&lt;/h1&gt;
&lt;p&gt;为你的包协调并约束依赖。&lt;/p&gt;
&lt;h2 id="Overview"&gt;概述&lt;/h2&gt;
&lt;p&gt;包管理器把依赖解析的结果记录在包顶层名为 &lt;code&gt;Package.resolved&lt;/code&gt; 的文件中。当该文件存在，并且你正在为依赖树的顶层（叶子）包解析依赖时，包管理器会把 &lt;code&gt;Package.resolved&lt;/code&gt; 文件用作各依赖版本的缓存。对于作为库使用、或作为另一个 Swift 项目依赖而引入的包，&lt;code&gt;Package.resolved&lt;/code&gt; 文件并不会固定它们所依赖的版本。如果该包是作为另一个包的依赖被解析的，那么它自己的 &lt;code&gt;Package.resolved&lt;/code&gt; 文件在那次解析中会被忽略。&lt;/p&gt;</description></item><item><title>3.1.2 用特性提供可配置的包</title><link>https://before80.github.io/prgms/Swift/SwiftPM/dependencies/3.1-AddingDependencies/3.1.2-PackageTraits/</link><pubDate>Fri, 11 Sep 2026 21:45:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/SwiftPM/dependencies/3.1-AddingDependencies/3.1.2-PackageTraits/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://docs.swift.org/latest/documentation/packagemanagerdocs/packagetraits/"&gt;https://docs.swift.org/latest/documentation/packagemanagerdocs/packagetraits/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="312-用特性提供可配置的包"&gt;3.1.2 用特性提供可配置的包&lt;/h1&gt;
&lt;p&gt;定义一个或多个包特性，为包提供默认功能和可配置功能。&lt;/p&gt;
&lt;h2 id="Overview"&gt;概述&lt;/h2&gt;
&lt;p&gt;在 6.1 版本之前，Swift 包对每个版本提供的都是一套不可配置的 API。从 Swift 6.1 开始，包可以提供特性（trait），用来表达该包的一套可配置 API。&lt;/p&gt;</description></item><item><title>3.1.3 解决依赖失败</title><link>https://before80.github.io/prgms/Swift/SwiftPM/dependencies/3.1-AddingDependencies/3.1.3-ResolvingDependencyFailures/</link><pubDate>Fri, 11 Sep 2026 21:45:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/SwiftPM/dependencies/3.1-AddingDependencies/3.1.3-ResolvingDependencyFailures/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://docs.swift.org/latest/documentation/packagemanagerdocs/resolvingdependencyfailures/"&gt;https://docs.swift.org/latest/documentation/packagemanagerdocs/resolvingdependencyfailures/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="313-解决依赖失败"&gt;3.1.3 解决依赖失败&lt;/h1&gt;
&lt;p&gt;了解各种依赖失败的场景。&lt;/p&gt;
&lt;h2 id="Overview"&gt;概述&lt;/h2&gt;
&lt;p&gt;在把依赖添加到包中时，你会为它们定义约束，而这些约束并不总能被满足。&lt;/p&gt;
&lt;p&gt;在运行构建或测试之前，或者当你运行 &lt;a href="../../../swiftcommands/7.3-SwiftPackageCommands/7.3.3-PackageResolve/"&gt;swift package resolve&lt;/a&gt; 时，包管理器会遍历你的包中的依赖，以及它们递归的所有依赖，从而构建出一份完整列表。然后它会尝试为每个依赖选出一个版本，使其既符合你的包的约束，也符合你的依赖所提供的任何约束。&lt;/p&gt;</description></item><item><title>3.1.4 添加对系统库的依赖</title><link>https://before80.github.io/prgms/Swift/SwiftPM/dependencies/3.1-AddingDependencies/3.1.4-AddingSystemLibraryDependency/</link><pubDate>Fri, 11 Sep 2026 21:45:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/SwiftPM/dependencies/3.1-AddingDependencies/3.1.4-AddingSystemLibraryDependency/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://docs.swift.org/latest/documentation/packagemanagerdocs/addingsystemlibrarydependency/"&gt;https://docs.swift.org/latest/documentation/packagemanagerdocs/addingsystemlibrarydependency/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="314-添加对系统库的依赖"&gt;3.1.4 添加对系统库的依赖&lt;/h1&gt;
&lt;p&gt;定义库的位置，并提供模块映射，把 C 头文件暴露给 Swift。&lt;/p&gt;
&lt;h2 id="Overview"&gt;概述&lt;/h2&gt;
&lt;p&gt;你可以借助包管理器链接系统库，把它们当作代码中的依赖使用。为此，添加一个 &lt;a href="https://developer.apple.com/documentation/packagedescription/target/systemlibrary(name:path:pkgconfig:providers:)"&gt;systemLibrary&lt;/a&gt; 类型的 &lt;code&gt;target&lt;/code&gt;，并为你使用的每个系统库提供一个 &lt;code&gt;module.modulemap&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>3.1.5 使用系统库依赖与 pkg-config 的示例</title><link>https://before80.github.io/prgms/Swift/SwiftPM/dependencies/3.1-AddingDependencies/3.1.5-ExampleSystemLibraryPkgConfig/</link><pubDate>Fri, 11 Sep 2026 21:45:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/SwiftPM/dependencies/3.1-AddingDependencies/3.1.5-ExampleSystemLibraryPkgConfig/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://docs.swift.org/latest/documentation/packagemanagerdocs/examplesystemlibrarypkgconfig/"&gt;https://docs.swift.org/latest/documentation/packagemanagerdocs/examplesystemlibrarypkgconfig/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="315-使用系统库依赖与-pkg-config-的示例"&gt;3.1.5 使用系统库依赖与 pkg-config 的示例&lt;/h1&gt;
&lt;p&gt;创建一个把 libgit2 作为系统库依赖使用的命令行可执行文件包。&lt;/p&gt;
&lt;h2 id="Overview"&gt;概述&lt;/h2&gt;
&lt;p&gt;下面的示例完整演示了创建一个依赖 &lt;a href="https://github.com/libgit2/libgit2"&gt;libgit2&lt;/a&gt; 的二进制可执行文件的过程。&lt;/p&gt;</description></item><item><title>3.1.6 编辑包所用的远程依赖</title><link>https://before80.github.io/prgms/Swift/SwiftPM/dependencies/3.1-AddingDependencies/3.1.6-EditingDependencyPackage/</link><pubDate>Fri, 11 Sep 2026 21:45:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/SwiftPM/dependencies/3.1-AddingDependencies/3.1.6-EditingDependencyPackage/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://docs.swift.org/latest/documentation/packagemanagerdocs/editingdependencypackage/"&gt;https://docs.swift.org/latest/documentation/packagemanagerdocs/editingdependencypackage/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="316-编辑包所用的远程依赖"&gt;3.1.6 编辑包所用的远程依赖&lt;/h1&gt;
&lt;p&gt;把远程依赖临时切换为本地依赖，以便编辑该依赖。&lt;/p&gt;
&lt;h2 id="Overview"&gt;概述&lt;/h2&gt;
&lt;p&gt;当你的工作需要改动某个依赖时（例如修复一个缺陷，或添加一个新 API），Swift 包管理器支持编辑依赖。包管理器会把这个依赖移动到一个可编辑的 &lt;code&gt;Packages/&lt;/code&gt; 目录下。&lt;/p&gt;</description></item></channel></rss>