在xcode运行脚本中运行脚本执行目的

时间:2017-11-02 13:27:04

标签: objective-c xcode shell run-script

我有一个使用shell脚本的应用程序在编译期间执行某些操作,我正在尝试了解该脚本究竟是做什么的,因为我收到编译错误而无法运行源代码。

如果有人可以帮助我并解释下面的脚本做什么

#!/bin/bash

echo BUILD_ROOT = "${BUILD_ROOT}"

p=`echo "${BUILD_ROOT}" | sed -ne 's/.*\(^\/.*\/DerivedData\).*/\1/p'`

echo "//${BUILD_ROOT}" > ${SRCROOT}/info.h

cat "${p}/../info.h" >> ${SRCROOT}/info.h

我在编译期间遇到以下错误

  

BUILD_ROOT =   /工作/ XXXXXXX / XXXXX / testTarget / DerivedData / testTarget /编译/产品   cat:/Working/XXXXXX/XXXXXXX/testTarget/DerivedData/../info.h:没有这样的   文件或目录

1 个答案:

答案 0 :(得分:1)

这个脚本没有多大意义。你有什么希望呢?我会按行分解:

  1. 基本上这没有任何作用,它正在存储BUILD_ROOT的值。
  2. 默认情况下,Xcode使用~/Library/Developer/Xcode/DerivedData/<YOUR_APP>-XXXXX/...作为其BUILD_ROOT变量。这行代码在变量p中存储该文件夹的完整路径。
  3. 在应用源代码的基本文件夹中创建一个名为info.h的文件,其值为BUILD_ROOT
  4. 此行将转到DerivedData上方的文件夹并打印info.h - 的值,该值实际上并不存在,从而导致脚本崩溃 - 并将其附加到第3行创建的info.h