【发布时间】:2020-07-10 12:18:10
【问题描述】:
我正在尝试将本地开发中的 Swift 包添加到我的项目中。我关注了这个Organizing Your Code with Local Packages。使用 Xcode 12 测试版。
我创建了一个名为“MyLibrary”的快速包。 然后我将代码从我的应用程序移动到我的 swift 包中的 Sources 文件夹中。 然后我在 Xcode 中关闭 swift 包项目并将包文件夹拖放到我的应用程序中。
但是,这就是我卡住的地方。我需要在构建阶段将 MyLibrary 目标添加到 Link binary with Libraries 部分。我没有在对话框中看到库/框架目标。
我在下面列出了 swift 包的产品和目标。我也尝试添加 binaryTarget,但没有帮助。
products: [
.library(
name: "MyLibrary",
targets: ["MyLibrary"]),
],
targets: [
.target(
name: "MyLibrary",
dependencies: []),
.testTarget(
name: "MyLibraryTests",
dependencies: ["MyLibrary"]),
]
【问题讨论】:
-
尝试退出 Xcode 并重新启动它。只打开项目,不打开包。我发现如果两者都打开,将一个包拖到现有项目中是行不通的。
-
@matt haha,有趣的是我确实遇到了这个问题,但我经历了forums.swift.org/t/how-to-add-local-swift-package-as-dependency/…,在那里你提出了上面的解决方案,它就像一个魅力。但这是我遇到的另一个问题。我看不到构建阶段中列出的目标 > 将二进制文件与库链接。我尝试完全关闭 xcode,从头开始创建另一个 swift 包,但问题仍然存在。
-
好吧,我可以创建并链接一个工作包。重新开始,这一次将包添加到您创建它时现有项目的顶层,而不是稍后拖动。
-
好的,现在我发现出了什么问题。我在主应用程序中编写了一个简单的依赖注入代码,并希望将其移动到库中。我将文件直接移动到 Sources 下(Sources>DI.swift),由于现在不需要 Sources 中的“MyLibrary”文件夹,因此我将其删除。这就是问题所在。您需要将文件放在 Sources 文件夹内的 MyLibrary 文件夹中(Sources>MyLibrary>DI.swift)。感谢您的帮助,@matt
-
是的,如果你也修改了包清单,你可以删除测试,但包的整体结构是绝对固定的,你不能改变它。
标签: swift swift-package-manager