経緯
あるソフトのインタフェースに改行区切りでファイル一覧を渡す必要があったのですが、検索してもそのものズバリなものが出てこなかったので、備忘録として書いておきます。
単純に出力した場合
Makefileのリストを出力するとスペース区切りになります。
NAME_LIST = foo bar baz
.PHONY : output_list
output_list :
@echo $(NAME_LIST)
$ make output_list
foo bar baz
改行区切りで出力する場合
$(foreach VAR, LIST, TEXT)
を使ったやり方がシンプルでよさそうです。
NAME_LIST = foo bar baz
.PHONY : output_list
output_list :
@$(foreach name, $(NAME_LIST), echo $(name);)
$ make output_list
foo
bar
baz
ちなみにTEXT
の最後のセミコロンは、シェルにコマンドの区切りを教えるためのものなので、忘れるとうまく動きません。
変数が展開されたときには以下のようになります。
echo foo; echo bar; echo baz;