如何将演示应用程序目标添加到 Swift 程序包?

How can I add a demo app target to a Swift Package?

我希望包含一个带有 Swift 自定义控件包的演示应用程序,其中显示了每个控件的实现演示。有没有一种方法可以将其包含在 Swift 包中(并且 develop/test 控件直接包含在包中)?

什么样的应用程序? SwiftPM 仅直接支持 macOS/Linux 个可执行文件。

如果您想要一个 iOS/tvOS/watchOS,您将需要一个 Xcode 项目,该项目 link 使用相对路径来查找您的包。这是通过创建示例应用程序并将包的包含目录拖到 Xcode 项目中来完成的。然后您可以 link 图书馆。如果您将此示例应用程序与包一起放在存储库中,那么它将与克隆该包的任何人一起分发。

我自己做这件事时注意到的一件重要事情(这几乎肯定是 Xcode 中的错误)是 Package.swiftExample.xcodeproj 不能在同一个目录中。您必须将 Xcode 项目嵌套到另一个目录中,否则它会经常出现问题 building/linking。因此,如果您 运行 对我的建议有任何疑问,也可以试试这个创可贴。

我在 GitHub here 上创建了一个适用于 Xcode 11.3 的示例。

最好的方法是使用“Xcode 工作区”。 它是如何工作的?

1.创建您的工件

创建目录。

在其中创建一个 Xcode 工作区(Xcode:文件:新建:工作区)。然后创建您的库(包),并在同一目录中创建您的应用程序(任何类型)。

这一步只要把包和app放到上面的目录下,马上关闭即可。

应该是这样的。

2。 Link你的神器

打开您的 .xcworkspace 文件。

点击左下角的“+”号。

Select“添加文件到your_workspace_name”,然后:

a) 演示应用

导航到应用程序的目录,select Your_app.xcodeproj 并点击添加。

b) 包裹

导航到包的目录,select 仅导航到包目录。在点击“添加”按钮之前,请确保“为任何添加的文件夹创建文件夹引用”已 selected。

您的整个工作区现在应该如下所示。您可以立即将库导入您的应用程序,然后就可以开始了。

以下是在 Xcode 13 上对我有用的步骤:

  1. 创建一个名为 MyLibrary
  2. 的包

  1. 在包目录
  2. 中创建一个新的项目应用程序MyLibraryDemo

  1. 打开项目的 .xcodeproj 文件

  2. 前往 PROJECT > MyLibraryDemo > Add packages

  1. Add Local 和 select 包含您的包的目录

  1. 转到应用程序的 TARGET > General > Frameworks, Libraries and Embeded Content,然后按 'add'

  1. Select 列表中的包裹

  1. 现在您可以将 MyLibrary 包导入您的示例应用程序,并从您的演示项目中编辑/更新您的包。