如何构建链接到本地(非系统)库的 Swift 包?



我一定读过十几篇关于将本地库链接到我的 Swift 包的可能技术的文章。具体来说,我的软件包依赖于libturbojpeg.a,大多数用户不会在任何地方安装它。即使他们确实安装了它(有一个DMG(,我也必须通过箍以确保我以正确的版本链接。我终于在 Swift 论坛上找到了一个帖子,基本上是说你现在做不到。

现在链接它的唯一方法是使用.linkerSettings(LinkerSetting.unsafeFlags(...,但是如果您使用它,您的软件包将无法由 Xcode 管理(请参阅上面的链接,我什至尝试过并验证它不能使用(。

是否有某种解决方法允许我随库一起分发我的 Swift 包?

在我的包中,我创建了一个目录"库"并在那里添加了我的库。

我发现 Xcode 11 在派生文件夹目录中的特定位置包含 Swift 包。这意味着可以在链接阶段告诉 Xcode 在哪里可以找到它。

"我的包"中为用户提供了以下说明:

1( 使用 URL 为 https://github.com/dhoerl/的 Xcode->文件>包添加包

2( 打开应用的项目构建阶段,然后从左侧文件窗格中显示的包中,将库/.a 文件拖到链接阶段。它将出现在应该已经存在的上方

3( 在"应用程序构建设置"中的"库搜索路径"下,添加: "$(BUILD_DIR(/../../SourcePackages/checkouts//Libraries">

构建并运行!沃伊拉 - 像魅力一样工作!

注意:显然这有点脆弱,Xcode 12 可能会改变包的管理方式,但到那时 Swift 包管理器可能会支持本地库的链接(上面链接中提到过(。

最新更新