Swift 包管理器 - 如何“始终嵌入 Swift 标准库”?
Posted
技术标签:
【中文标题】Swift 包管理器 - 如何“始终嵌入 Swift 标准库”?【英文标题】:Swift Package Manager - How to `Always Embed Swift Standard Libraries`? 【发布时间】:2019-09-23 13:38:25 【问题描述】:我们有用 Swift 编写的 CLI 工具,供 macOS 上的常见用途(android 和 ios 开发人员)使用。 未安装 Xcode 的 Android 开发者收到以下错误:
dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: ~/git/myClITool/macosBin Reason: image not found
Abort trap: 6
我们发现在 Xcode 中启用 Always Embed Swift Standard Libraries
很可能会有所帮助,但是这个 CLI 工具是使用 SPM 导出的,忽略了所有 Xcode 设置。
如何仅使用 SPM 实现这种构建行为?
【问题讨论】:
【参考方案1】:找到以下命令行参数:--static-swift-stdlib
示例用法:
swift build --static-swift-stdlib -c release
这将产生我们正在寻找的输出。不幸的是,从 Swift 5 开始,这个论点不再适用适用于任何平台。
使用时,SPM 会引发以下警告:
警告:Swift 编译器不再支持静态链接 斯威夫特库。它们默认包含在操作系统中 macOS Mojave 10.14.4 beta 3。对于 macOS Mojave 10.14.3 及更早版本, 有一个可选的 Swift 库包,可以从 面向 Apple 开发人员的“更多下载”,网址为 https://developer.apple.com/download/more/
相关的 Swift bugticket:https://bugs.swift.org/browse/SR-648
【讨论】:
以上是关于Swift 包管理器 - 如何“始终嵌入 Swift 标准库”?的主要内容,如果未能解决你的问题,请参考以下文章
Swift 包管理器 - 如何“始终嵌入 Swift 标准库”?
如何使用 Swift 包管理器更新 iOS 模拟器部署目标?