Makefileのwildcard
関数はパターンにマッチするファイル(あるいはディレクトリ)を列挙してくれます。
ファイル名をすべて書くのが面倒なときやmake
時にしか実際のファイル名がわからない時に便利です。
以下はwildcard
関数の使用例です。.txtで終わるファイル(あるいはディレクトリ)を取得しFILESに代入しています。
FILES=$(wildcard *.txt)
all:
@echo $(FILES)
このwildcard
の結果はソートされていると思っていたのですが、実はそうではないことがわかりました。
例えば次のように.txtで終わるファイルがいくつかあるとします。
$ ls *.txt
a.txt b.txt c.txt
ここでmake
を実行すると
$ make
c.txt a.txt b.txt
となりました。出力結果をソートしたいときは、以下のようにsort
関数をwildcard
関数の結果に適用します。
FILES=$(sort $(wildcard *.txt))
all:
@echo $(FILES)