有没有办法为swift package generate-xcodeproj
生成Xcode项目设置macOS目标?
例如,将默认目标设置为“x86_64-apple-macosx 10.12”。
背景
目前,Xcode 9.2 Swift工具链在命令行上显示了以下版本:
swift --version
# Apple Swift version 4.0.3 (swiftlang-900.0.74.1 clang-900.0.39.2)
# Target: x86_64-apple-macosx10.9
swift package --version
# Apple Swift Package Manager - Swift 4.0.0-dev (swiftpm-13752)
swift package generate-xcodeproj
的结果是一个macOS目标为10.10的Xcode项目。
- 注意:生成的Xcode 10.10目标比10.9的swift命令行编译器目标高一个版本。因此,显然,
swift
和swift package generate-xcodeproj
的默认macOS目标是独立确定的。
到目前为止,任何使用Package.swift、--xcconfig-overrides
或其他东西的解决方案都是难以捉摸的。
4条答案
按热度按时间4xrmg8kj1#
Swift 5.something
swift package generate-xcodeproj
不再可用。请参阅platforms: [ … ]
的可接受答案,了解目前的工作原理。Swift 5
Swift 5包管理器现在可以通过
Package.swift
中的platforms
指定最低要求的目标平台。...见Klaas提供的答案。Swift 4
最后,我创建了
swiftxcode
、swiftbuild
和swifttest
bash别名作为简化的解决方案:1.使用
swift package generate-xcodeproj
设置macOS目标,以及1.隐藏
swift build -Xswiftc "-target" -Xswiftc "x86_64-…"
设置
Edit and
source
~/.bash_profile
将swiftxcode
、swiftbuild
和swifttest
别名添加到命令行。在中编辑
Package.swift
,以使用Swift Package Manager工具版本4指定项目:将
Package.xcconfig
添加到项目文件夹:Package.xcconfig
文件的其他设置。*使用
注意事项
Package.xcconfig
在Xcode项目中设置Build Settings值 * 仅在目标级别 *。总体 * 项目级别 * 生成设置值保持不变。Package.xcconfig
项目值 * 为所有目标设置相同 *。目前似乎没有一种针对每个目标的xcconfig机制。1.某些
xcconfig
值,例如SKIP_INSTALL
,可能需要在Xcode项目中手动设置。路线图
希望上面显示的当前有限的
xcconfig
方法将被在包清单中指定自定义构建设置的能力所取代,如Swift 4 Package Manager Roadmap中所讨论的。配置文件支持
我们正在考虑添加一个配置文件机制,它可以是用户特定的或包特定的,以允许定制某些包管理器行为。一个直接的用途是作为一种临时机制来传递包的重写编译器标志,尽管我们希望用一个真实的的构建设置模型来解决这个需求。配置文件的其他用途也有待考虑。
另外值得注意的是,苹果用Swift编写并随Xcode 9发布的“新构建系统(预览版)”可以使用
xcconfig
文件来定义构建设置。资源
v2g6jxz62#
Swift演进提案SE-0236增加了每个平台最低部署目标的配置:
这导致Xcode项目中的目标“MyTool”将“Deloyment Target”设置为10.13。
f0brbegy3#
如果官方的swift工具不允许一些Xcode项目操作,您可能需要回退到编写一个脚本来更新生成的Xcode项目。
可以使用xcodeproj rubygem。参见an example script。
查看相关问题Swift Package Manager and Xcode: Retaining Xcode Settings?
nfg76nw04#
步骤来实现这一点没有第三方工具。
1)在**/Sources文件夹中创建macos.xcconfig**文件,内容如下
2)在项目的根目录中运行此命令