下面是一个简单的快速脚本:
#!/usr/bin/env xcrun swift
import Foundation
let task = NSTask()
task.launchPath = "/bin/echo"
task.arguments = ["farg1", "arg2"]
let pipe = NSPipe()
task.standardOutput = pipe
task.launch()
let data = pipe.fileHandleForReading.readDataToEndOfFile()
let output: String = NSString(data: data, encoding: NSUTF8StringEncoding)
print(output)我在iOS项目中将此脚本添加为构建阶段(在“编译源代码阶段”之前),但XCode未能用错误“未定义的NSTask().”构建项目当我在OSX项目中添加相同的脚本时,XCode构建项目时没有任何错误。
问题是为什么XCode要在iOS框架内寻找NSTask (在不存在的地方),而是以平台脚本(比如bash)的形式运行快速脚本?
只是想补充一下: swift脚本与其他要编译的文件一起不包括在项目中。它只是添加到构建阶段,甚至在编译之前,还会添加其他源文件(它们是目标-c文件)来运行它。
如果脚本包含的类不是iOS框架的一部分,那么如何从XCode项目中运行自定义的快速脚本呢?
发布于 2015-06-22 15:07:13
在为iOS构建时,用于xcrun的隐式SDK是iOS SDK,因此您可以使用命令行参数将其更改为Mac。将脚本中的第一行更改为:
#!/usr/bin/env xcrun --sdk macosx swift发布于 2016-03-27 14:22:28
+1代表@Mats的答案。
对于任何有像*** is only available on OS X 10.11 or newer这样的错误的人来说。
您可以:
#!/usr/bin/env xcrun --sdk macosx swift -target x86_64-macosx10.11更新1:
如果您还没有为Swift 3做好准备,但您正在使用Xcode 8,您还可以控制工具链版本:
xcrun --toolchain com.apple.dt.toolchain.Swift_2_3 -f swift所以:
#!/usr/bin/env xcrun --toolchain com.apple.dt.toolchain.Swift_2_3 --sdk macosx swift -target x86_64-macosx10.11也可以在这里查看答案:https://stackoverflow.com/a/36254848/1298043
发布于 2017-07-07 11:38:59
如果在调用快速脚本之前取消设置SDKROOT环境变量,那么它将使用OS。
https://stackoverflow.com/questions/30981724
复制相似问题