第一行:
SDKROOT= make -C $TEMP_DIR -f $PROJECT_DIR/greg/Makefile VPATH=$PROJECT_DIR/greg || exit $?
SDKROOT=将环境变量设置SDKROOT为 none 以执行make命令。
make是构建工具,它使用以下选项运行:
-C $TEMP_DIR: 表示make在目录中运行$TEMP_DIR
-f $PROJECT_DIR/greg/Makefile指定make使用 Makefile 在$PROJECT_DIR/greg
VPATH=$PROJECT_DIR/greg将另一个变量设置VPATH为$PROJECT_DIR/greg。VPATH指定make prerequisits 的搜索路径。
|| exit $?意味着如果make命令失败,脚本应该以与 相同的错误代码退出make,这$?意味着最后运行程序/命令的返回代码。
第二行:
$TEMP_DIR/greg -o $DERIVED_FILES_DIR/${INPUT_FILE_BASE}.m $INPUT_FILE_PATH
似乎正在运行$TEMP_DIR/greg带有选项的命令,-o $DERIVED_FILES_DIR/${INPUT_FILE_BASE}.m并带有来自$INPUT_FILE_PATH. 这看起来像是从前一行的make命令构建的程序,所以很难确切知道它做了什么。
编辑
SDKROOT 是 XCode 使用的环境变量,用于说明它使用的 SDK 的安装位置。例如,这将是一条路径/Developer/SDKs/MacOSX"${HOST_VERSION}".sdk/。我想应该在 XCode 中的某个地方设置该值(我没有使用 xcode,所以没有比这更有帮助的了。)。通过SDKROOT=在命令的开头执行,值SDKROOT将是空/空白。这样做的原因是正在编译的代码将使用存在于 中的资源SDKROOT,而不是本地资源;例如,此类资源可能是类、配置或库。