Makefileルールの理由を説明していただけますか:
clean:
rm -f foo.{bar1,bar2,bar3}
ファイルを削除することにはなりません: foo.bar1 foo.bar2 および foo.bar3? さまざまな Makefile でそのようなパターンを何度も見たと思いますが、現在独自の Makefile を作成していて、そのルールを正しく機能させることができません (ファイルは削除されません)。
私は使用しています:
- ヌーメイク3.81
- gnu バッシュ 4.1.5
私が推測するように、Bashはそのパターンを評価します:
$ echo test.{a,b,c}
test.a test.b test.c
ありがとう!
アップデート
David のヒントのおかげで、上記の問題の解決策が見つかりました。gnu make はデフォルトで /bin/sh を使用するため、a.{1,2,3} は a.1 a.2 a.3 に評価されません。
「make」で sh の代わりに bash を使用するには、次の行を Makefile に追加します。
SHELL=/bin/bash
これから a.{1,2,3} は a.1 a.2 a.3 と見なされます