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

jos*_*shd 8 swift-package-manager

我希望包含一个带有自定义控件的 Swift 包的演示应用程序,该包显示每个控件的实现演示。有没有办法可以将其包含在 Swift 包中(并且还可以通过这种方式直接在包内开发/测试控件)?

tos*_*pig 38

以下是在 Xcode 13/14/15-beta 上对我有用的步骤:

  1. 创建一个名为MyLibrary

在此输入图像描述

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

在此输入图像描述

  1. 打开项目的.xcodeproj文件

  2. 转到PROJECT> MyLibraryDemo>Package Dependencies并按“加号”符号

在此输入图像描述

  1. Add Local并选择包含您的软件包的目录

在此输入图像描述

  1. 转到应用程序的>> TARGET,然后按“添加”GeneralFrameworks, Libraries and Embeded Content

在此输入图像描述

  1. 从列表中选择您的包裹

在此输入图像描述

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

在此输入图像描述


一些注意事项:

  1. 如果您的包/演示有其他依赖项,并且这些其他依赖项已更新,您可能必须DerivedData在更新之前清除

  2. 可能还需要关闭并重新打开 Xcode,特别是如果您更新了依赖项,但它仍然显示“找不到包MyLibrary


Sar*_*tov 9

The best approach is to use "Xcode workspace". How does it work?

1. Create your artifacts

Create a directory.

Create an Xcode workspace inside there (Xcode: File: New: Workspace). Then create your library (package), and create your app (whatever type) inside the same directory.

In this step, just place the package and the app in the above directory, and close them immediately.

It should look like this.

在此输入图像描述

2. Link your artifacts

Open your .xcworkspace file.

In the left bottom corner, click "+" sign.

在此输入图像描述

Select "Add files to your_workspace_name", then:

a) for the Demo app

Navigate to the app's directory, select Your_app.xcodeproj and hit Add.

b) for the package

Navigate to the package's directory, and select the package directory only. Before hitting Add button, make sure "Create folder references for any added folders" is selected.

在此输入图像描述

Your entire workspace should look like this now. You can immediately import the library inside your app and you are ready to go.

在此输入图像描述


bsc*_*ern 7

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

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

我自己在执行此操作时注意到的一件重要事情(这几乎肯定是 Xcode 中的一个错误)是Package.swiftExample.xcodeproj不能在同一目录中。您必须将 Xcode 项目嵌套到另一个目录中,否则很多时候构建/链接都会出现问题。因此,如果您在使用我的建议时遇到任何问题,也可以尝试使用此创可贴。

我已经创建了GitHub上的例子在这里,对于Xcode的11.3作品。