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)