我对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
请您解释一下这两行代码的作用......我知道变量是什么以及路径名,但其余的语法是混乱的和外来的。请帮忙。
答案 0 :(得分:1)
第一行:
SDKROOT= make -C $TEMP_DIR -f $PROJECT_DIR/greg/Makefile VPATH=$PROJECT_DIR/greg || exit $?
SDKROOT=
将环境变量SDKROOT
设置为空,以执行make
命令。make
是构建工具,它使用以下选项运行:
-C $TEMP_DIR
:表示在make
$TEMP_DIR
-f $PROJECT_DIR/greg/Makefile
指定make
使用$PROJECT_DIR/greg
中的Makefile VPATH=$PROJECT_DIR/greg
将另一个变量VPATH
设置为$PROJECT_DIR/greg
。 VPATH
指定make
a search path for 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
中存在的资源,而不是本地资源;例如,这些资源可以是类,配置或库。