0

我有一个应用程序使用在编译期间执行某些操作的 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 = /Working/XXXXXXX/XXXXX/testTarget/DerivedData/testTarget/Build/Products 目录:/Working/XXXXXX/XXXXXXX/testTarget/DerivedData/../info.h:没有这样的文件或目录

4

1 回答 1

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-实际上并不存在并因此使脚本崩溃- 并将其附加到第info.h3 行中创建的值。
于 2017-11-02T14:41:26.117 回答