私はGNU Makeのドキュメントを読んでいます。ここに例があります
%.d: %.c
@set -e; rm -f $@; \ $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \ sed ’s,\($*\)\.o[ :]*,\1.o $@ : ,g’ < $@.$$$$ > $@; \ rm -f $@.$$$$
これをC++プログラムで試してみたところ、ファイルのリストが取得できました。
init3d.d init3d.d.18449 input.d input.d.18444 main.d main.d.18439
私が見つけたが、同じように理解できなかったものは次のとおりです書類
セカンダリ拡張を有効にしていて、前提条件リストに文字通りのドル記号が必要な場合は、実際には 4 つのドル記号 (「$$$$」) を記述する必要があります。
4 つのドル記号「$$$$」は実際何を意味するのでしょうか? 18449、18444、それとも 18439 なのでしょうか?
ありがとう、よろしく!
ベストアンサー1
make の「二次展開」が有効になっている場合、実際の出力に$$$$
単一の を生成するために が必要です。は通常、変数を展開したり、make 関数を呼び出したりするために使用されます。二次展開が有効になっている場合は他の処理を行いますが、そうでない場合は実際の出力に を生成します。$
$
$$
$
Unix 系システムでコマンドラインを実行するために make が使用するシェルは、通常、$$
をシェルのプロセス ID に展開すると解釈します。したがって、二次展開が有効になっていない場合、は出力で に$$$$
なり$$
、シェルはそれをプロセス ID に展開します。
(シェル プロセス ID をサフィックスとして使用することは、一時ファイルのファイル名の一意性を保証するための簡単な方法です。)