首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Xcode iOS项目运行快速脚本作为构建阶段

从Xcode iOS项目运行快速脚本作为构建阶段
EN

Stack Overflow用户
提问于 2015-06-22 13:51:48
回答 3查看 6.9K关注 0票数 24

下面是一个简单的快速脚本:

代码语言:javascript
复制
#!/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项目中运行自定义的快速脚本呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-22 15:07:13

在为iOS构建时,用于xcrun的隐式SDK是iOS SDK,因此您可以使用命令行参数将其更改为Mac。将脚本中的第一行更改为:

代码语言:javascript
复制
#!/usr/bin/env xcrun --sdk macosx swift
票数 33
EN

Stack Overflow用户

发布于 2016-03-27 14:22:28

+1代表@Mats的答案。

对于任何有像*** is only available on OS X 10.11 or newer这样的错误的人来说。

您可以:

代码语言:javascript
复制
#!/usr/bin/env xcrun --sdk macosx swift -target x86_64-macosx10.11

更新1:

如果您还没有为Swift 3做好准备,但您正在使用Xcode 8,您还可以控制工具链版本:

代码语言:javascript
复制
xcrun --toolchain com.apple.dt.toolchain.Swift_2_3 -f swift

所以:

代码语言:javascript
复制
#!/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

票数 7
EN

Stack Overflow用户

发布于 2017-07-07 11:38:59

如果在调用快速脚本之前取消设置SDKROOT环境变量,那么它将使用OS。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30981724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档