Makefile には 2 つのターゲットがあります。
.SECONDARY:
exp-%.ans:
echo $* > eval/$@
%.scores: %.ans
cat eval/$< > eval/$@
make -n exp-40.scores
出力を書くと、次のようになります。
echo 40 > eval/exp-40.ans
cat eval/exp-40.ans > eval/exp-40.scores
1つのことを除いて、これは良いことです。依存関係が既に保持されていることを認識していません。eval/exp-40.scores を (初めて) 作成すると、同じコマンドを実行すると、make が既にそこにあると言うことが期待されます。だから私は次のように私の Makefile を変更しようとします:
.SECONDARY:
exp-%.ans:
echo $* > eval/$@
%.scores: eval/%.ans
cat eval/$< > $@
make -n exp-40.scores
もう一度書くと、出力は次のようになります。
echo eval/40 > eval/eval/exp-40.ans
cat eval/eval/exp-40.ans > exp-40.scores
私のパラメータは eval/40 ではなく 40 であるべきなので、これは完全に間違っています。
この 2 つの世界を最大限に活用するにはどうすればよいでしょうか? つまり、eval/ フォルダーに *.scores を作成します。また、ファイルが既に存在するかどうかを確認する必要があります。次に、そのファイルの存在に従って make を続行する必要があります。
ありがとう。