1

再現性のある研究のためのツールとして make を使用したいと思います。この研究には、多くの独立したデータセットに対して実行する長いパイプラインが含まれており、次のように「疑似作成」で説明するワークフローが必要です。

datasets = foo bar baz

$(datasets): path/to/result/%.dat: 
    ./generate_dat_from %

$(datasets): path/to/figs/%.png: path/to/result/%.dat
    ./generate_png_from_dat path/to/result/%.dat

[etc.]

make が単に各データセットの名前を '%' に置き換えるだけであれば、これはまさに私が望むものです。ただし、GNU make マニュアルには、静的パターン ルールの構文について次のように記載されています。

target-pattern がターゲットに一致する場合、`%' はターゲット名のどの部分にも一致します。この部分はステムと呼ばれます。パターンの残りの部分は正確に一致する必要があります。

上記のコードが機能しない理由を説明します。make でこれを達成するための最良の方法は何ですか、または make は単にこの仕事に適したツールではありませんか?

前もって感謝し、質問が不十分である場合はお詫びします-私は作成するのが初めてで、この質問を表現する方法がほとんどわかりません.

4

1 に答える 1

1

私はこれを理解したと思います。問題は次の行にありました。

./generate_dat_from %

これは「%」の不正な使用です。正しい形式は次のとおりです。

$(datasets): path/to/result/%.dat: 
./generate_dat_from $*

$* は、ターゲット内の % に一致したものをキャプチャします。

これが他の人に役立つことを願っています。

于 2013-08-21T16:09:44.957 に答える