Swift 5.x
swift package generate-xcodeproj
已不再可用。请参阅带有platforms: [ … ]
的已接受答案,了解当前有效的方法。
Swift 5
Swift 5包管理器现在可以通过Package.swift
中的platforms
指定最低所需目标平台。...请参见Klaas提供的答案。
Swift 4
我最终创建了swiftxcode
、swiftbuild
和swifttest
bash别名作为简化的解决方法:
- 使用
swift package generate-xcodeproj
设置macOS目标,以及
- 隐藏
swift build -Xswiftc "-target" -Xswiftc "x86_64-…"
设置
编辑并 source
〜/ .bash_profile
添加swiftxcode
,swiftbuild
和swifttest
别名到命令行中。
alias swiftxcode="swift package generate-xcodeproj --xcconfig-overrides Package.xcconfig"
alias swiftbuild='swift build -Xswiftc "-target" -Xswiftc "x86_64-apple-macosx10.12"'
alias swifttest='swift test -Xswiftc "-target" -Xswiftc "x86_64-apple-macosx10.12"'
编辑 Package.swift
文件,指定使用 Swift Package Manager 工具版本 4:
import PackageDescription
let package = Package(…
将Package.xcconfig
添加到项目文件夹中:
/// Package.xcconfig
/// macOS Deployment Target
///
/// Code will load on this and later versions of macOS.
/// Framework APIs that are unavailable in earlier versions will be weak-linked
/// your code should check for `null` function pointers
/// or specific system versions before calling newer APIs.
MACOSX_DEPLOYMENT_TARGET=10.12
注意:可选操作,由James Dempsey创建的BuildSettingExtractor (xcodeproj → xcconfig)可能对探索其他设置并添加到Package.xcconfig
文件中有所帮助。
使用方法
cd to/some_project_folder/
swiftxcode
swiftbuild
swifttest
注意事项
Package.xcconfig
仅在 Xcode 项目的目标级别上设置构建设置值。整个项目级别的构建设置值保持不变。
Package.xcconfig
项目值对于所有目标都是相同的。目前似乎没有针对每个目标的 xcconfig 机制。
- 某些
xcconfig
值,例如 SKIP_INSTALL
,可能需要在 Xcode 项目中手动设置。
路线图
希望当前有限的 xcconfig
方法将被超越,通过在软件包清单中指定自定义构建设置来实现,如 Swift 4 Package Manager Roadmap 中所讨论的那样。
配置文件支持
我们正在考虑添加一个配置文件机制,可以是用户特定或包特定的,以允许自定义某些软件包管理器的行为。其中一个直接使用场景是作为传递覆盖包编译器标志的临时机制,尽管我们希望通过真正的构建设置模型来解决这个需求。配置文件的其他用途还在考虑中。
值得注意的是,苹果公司的“新构建系统(预览版)”,用Swift编写并随Xcode 9发布,可以使用xcconfig文件定义构建设置。
资源
swift package generate-xcodeproj
和...-Xswiftc "-target" -Xswiftc "x86_64…
的解决方法。 - l --marc l