2

私は主に私が使用しているmakefileを理解するために、makefileについて学ぼうとしていますが、おそらく単純なものに投げ込まれています。私を混乱させるmakefileのセクションは、次のようになります。

SUBS = dir1 dir2 dir3

depend clean:
         @-X=`pwd`;\
         for i in $(SUBS);\
         cd $$X/$$i;\
         done

「@-X=pwdは何をしますか?現在のディレクトリの値をXに割り当てることがわかりましたが、「@-」構文の読み方がわかりません。

また、なぜXとiの前に「$」ではなく「$$」を付ける必要があるのですか?両方の$が必要であることを実験的に確認しましたが、それぞれをそれらの値に置き換えるには1つだけが必要であると考えていました。

4

1 に答える 1

3

「@-」構文の読み方がわかりません。

左から右に読んでください:-)冗談はさておき、行の先頭にある「@」は、実行する前に行をエコーし​​ないようにmakeに指示します。「-」はエラーを無視するように指示します

Xと私は単に「$」ではなく「$$」を前に付ける必要がありますか?

make自体には$を介してアクセスされる変数がありますが、この場合、ルールはシェル変数を使用します。シェル変数も$からアクセスされます。$$は単なるエスケープであるため、実行されるシェルコマンドには、おそらく空であるmakefile変数Xの内容ではなく、$Xが含まれています。

于 2012-07-07T21:30:21.880 に答える