直接编译会报错,因为依赖了
UIKit
或其它库,需要额外指定-target
和-sdk
。
1.sdk
直接指定Xcode
对应的SDK
.
//模拟器
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulatorXX.X.sdk`
//真机
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOSXX.X.sdk`
//mac
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSXXX.X.sdk
使用相应的命令获取 例如:
➜ ~ xcrun --show-sdk-path --sdk macosx
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk
➜ ~ xcrun --show-sdk-path --sdk iphonesimulator
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk
➜ ~ xcrun --show-sdk-path --sdk iphoneos
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.4.sdk
2.target
(指令集-apple-ios版本
/指令集-apple-ios版本-simulator
)
这里在操作时用
Mac/iPhone
代替apple
也是可以的,分别指代Mac
和iPhone
平台。当然TV
和watch
也同理。
对应目标平台i386、x86_64、armv7、armv7s、arm64、arm64e
等,这里iOS版本
最低iOS7
。
如:arm64e-apple-ios14.0
、x86_64-apple-ios14-simulator
、armv7-iphone-ios12.0
、arm64-mac-macosx11.0
等
//模拟器
swiftc -emit-sil -sdk $(xcrun --show-sdk-path --sdk iphonesimulator) -target x86_64-apple-ios14.0-simulator ViewController.swift >> ./ViewController.sil
//真机
swiftc -emit-sil -sdk $(xcrun --show-sdk-path --sdk iphoneos) -target arm64e-apple-ios14.0 GitViewController.swift >> ./GitViewController.sil
//mac
swiftc -emit-sil -sdk $(xcrun --show-sdk-path --sdk macosx) -target arm64-apple-macosx11.0 GitViewController.swift >> ./GitViewController.sil
更详细的介绍可以观看官方讲解视频
网友评论