0

この例では:

メイクファイル:

eat_pie: pie
    rm pie

eat_%: %
    rm $*

ターミナル:

$ make eat_pie
make: *** No rule to make target `pie', needed by `eat_pie'.  Stop.

$ make eat_cake
make: *** No rule to make target `eat_cake'.  Stop.

ターゲットのケーキが見つからないことを eat_cake の出力にしないのはなぜですか?

GNU Make マニュアルには次のように記載されています。

ワイルドカード展開は、make によってターゲットと前提条件で自動的に実行されます。

4

1 に答える 1

2

あなたが何を求めているのかかなり不明です。与えられた例では、ワイルドカードの置換が機能します (ターゲットが偽として宣言されていない限り、偽のワイルドカードは展開されません)。あなたの問題は、「eat_」ルールがファイルの存在に依存することです。'pie' または 'cake' ファイルがなく、make がそれらをビルドする方法がわからない (そうするためのルールがないため)、それがエラー メッセージに表示されます。

于 2013-11-08T11:29:53.593 に答える