私の Makefile の 1 つのルールは、ディレクトリ全体 ( res/
) を ZIP ファイルに圧縮します。明らかに、このルールは、ディレクトリの下のファイルが変更されたときに実行する必要がありますres/
。したがって、そのディレクトリの下にあるすべてのファイルを前提条件としてルールに含める必要があります。このルールを実装するにはどうすればよいですか?
オプションを有効にしたglobstar
Bashでは、ワイルドカード パターンを使用して、そのディレクトリ内のすべてのファイルのリストを取得できますres/**/*
。ただし、Makefile で前提条件として指定すると機能しないようです。
filename.jar: res/**/*
touch
でファイルを ing した後でもres/
、レポートを作成します
make: `filename.jar' is up to date.
明らかにパターンを認識していません。
ディレクトリ自体を前提条件として宣言すると、次のようになります。
filename.jar: res
その後、ファイルが変更されたときに Make が再実行されることはありません (make
ディレクトリ自体の変更日のみを調べ、直接の子が追加、削除、または名前変更されたときにのみ変更されると思います)。