I know nothing about shell scripting but something has come up and I need to be able to understand what two lines of code do so that I can modify a project I am working on
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
will you please explain what these two lines of code do... I know what the variables are and the path names but the rest of the syntax is confusing and foreign. Please help.
The first line:
SDKROOT= make -C $TEMP_DIR -f $PROJECT_DIR/greg/Makefile VPATH=$PROJECT_DIR/greg || exit $?
SDKROOT=
sets the environment variable SDKROOT
to nothing for the execution of the make
command. make
is the build tool, and it's being run with the following options:
-C $TEMP_DIR
: means run make
in the directory $TEMP_DIR
-f $PROJECT_DIR/greg/Makefile
specifies to make
to use the Makefile in $PROJECT_DIR/greg
VPATH=$PROJECT_DIR/greg
sets another variable, VPATH
to $PROJECT_DIR/greg
. VPATH
specifies to make
a search path for prerequisits . || exit $?
means that if the make
command fails the script should exit with the same error code as make
, as $?
means the return code of the last run program/command . The second line:
$TEMP_DIR/greg -o $DERIVED_FILES_DIR/${INPUT_FILE_BASE}.m $INPUT_FILE_PATH
appears to be running the command $TEMP_DIR/greg
with the option -o $DERIVED_FILES_DIR/${INPUT_FILE_BASE}.m
and with some input from $INPUT_FILE_PATH
. This looks like the program which may have been built from the previous line's make
command, so it's hard to know exactly what it does.
The SDKROOT is an environment variable used by XCode to say where the SDK it's using is installed. It will be a path like /Developer/SDKs/MacOSX"${HOST_VERSION}".sdk/
for instance. The value should be setup somewhere in XCode I imagine (I don't used xcode so can't be more helpful than that.). By doing SDKROOT=
at the beginning of the command the value of SDKROOT
will be nothing/blank. The reason for this is that the code being compiled will use resources which exist in the SDKROOT
, rather than local ones; such resources may be classes, config or libraries for example.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.