0

シェルスクリプトについては何も知りませんが、何かが起こったので、作業中のプロジェクトを変更できるように、2 行のコードが何をするのかを理解できる必要があります。

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

この 2 行のコードが何をするのか説明してくれませんか... 変数とパス名は知っていますが、残りの構文は紛らわしく、異質です。助けてください。

4

1 に答える 1

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/Makefilemakeで Makefile を使用することを指定します$PROJECT_DIR/greg
    • VPATH=$PROJECT_DIR/greg別の変数を に設定VPATH$PROJECT_DIR/gregます。prerequisits の検索パスをVPATH指定します。make
  • || exit $?は、makeコマンドが失敗した場合、スクリプトが と同じエラー コードで終了する必要があることmakeを意味します。これは、最後に実行されたプログラム/コマンドのリターン コードを$?意味します。

2 行目:

$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 は、使用している SDK がインストールされている場所を示すために XCode によって使用される環境変数です。例のようなパスになり/Developer/SDKs/MacOSX"${HOST_VERSION}".sdk/ます。値は、私が想像するXCodeのどこかに設定する必要があります(私はxcodeを使用していないので、それ以上に役立つことはありません.)。SDKROOT=コマンドの先頭で行うことにより、 の値はSDKROOT何も/空白になります。これは、コンパイルされるコードがSDKROOTローカル リソースではなく に存在するリソースを使用するためです。そのようなリソースは、たとえば、クラス、構成、またはライブラリです。

于 2013-10-13T01:47:39.780 に答える