Mic*_*tin 11 xcode xcodebuild uikit swift swift-package-manager
在 Xcode 中,我可以选择我的目的地作为“通用 iOS 设备”或任何 iOS 模拟器,我的包将为 ios 构建特定于平台的代码。
通过命令行“swift build”只为 macOS 构建我的目标。
我想为 CI 目的构建 iOS 目标。为 macOS 构建的问题在于不会构建 UIKit 特定的代码。
例如:
#if canImport(UIKit)
// some invalid code
#endif
Run Code Online (Sandbox Code Playgroud)
无效代码不会被注意到,并且会通过构建阶段。
理想情况下,我可以说类似swift build -platform iOS
. 有没有办法做这样的事情?
Mic*_*tin 16
在撰写本文时(2019 年 2 月 16 日),一个可行的解决方案是:
swift build -v -Xswiftc "-sdk" -Xswiftc "`xcrun --sdk iphonesimulator --show-sdk-path`" -Xswiftc "-target" -Xswiftc "x86_64-apple-ios13.0-simulator"
Run Code Online (Sandbox Code Playgroud)
此命令使用 -Xswiftc 通过将 sdk 从 macOS 覆盖到 iphonesimulator 来解决此问题。
严格来说,我们添加这些标志以便开发人员可以解决问题,但他们也应该报告错误,以便我们可以为他们的需求提供适当的解决方案。
所以我猜未来会有更优雅的解决方案。
Max*_*tov 16
从 Xcode 11 开始,xcodebuild
支持开箱即用的 SwiftPM 包。
示例调用如下所示:
xcodebuild -scheme Foo \
-destination 'platform=iOS Simulator,OS=13.5,name=iPhone 11 Pro'
Run Code Online (Sandbox Code Playgroud)
Foo
您尝试构建的库产品的名称在哪里。您可以使用xcodebuild -list
. 您可以使用此调用获取给定方案的可用目的地列表:
xcodebuild -showdestinations -scheme Foo
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2689 次 |
最近记录: |