0

我对 shell 脚本一无所知,但是出现了一些问题,我需要能够理解两行代码的作用,以便我可以修改我正在处理的项目

SDKROOT= make -C $TEMP_DIR -f $PROJECT_DIR/greg/Makefile VPATH=$PROJECT_DIR/greg || exit $?
$TEMP_DIR/greg -o $DERIVED_FILES_DIR/${INPUT_FILE_BASE}.m $INPUT_FILE_PATH

请您解释一下这两行代码的作用...我知道变量是什么和路径名,但是其余的语法令人困惑且陌生。请帮忙。

4

1 回答 1

1

第一行:

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/gregVPATH指定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,而不是本地资源;例如,此类资源可能是类、配置或库。

于 2013-10-13T01:47:39.780 回答