概要
makeコマンドで複数引数を取れるようにする方法があったので記録する。 Dockerコマンドを集約するときに使うと便利。
結論
makeコマンドが受け取った、2番目の引数以降の値をすべて対象のコマンドに渡せばOK。
hogehoge:
<引数を渡したいコマンド> $(wordlist 2, $(words $(MAKECMDGOALS) - 2), $(MAKECMDGOALS))
解説
wordlist
Makefileの組み込み関数の一種。 第3引数で指定した値から、第1引数~第2引数の位置の文字列を抽出する。
hoge:
@echo $(wordlist 1, 2, "hoge fuga hoge") # hoge fuga
words
文字列数を返す。
hoge:
@echo $(words "hoge fuga hoge") # 3
MAKECMDGOALS
makeコマンドの引数が渡ってくる。
hoge:
@echo $(MAKECMDGOALS)
make hoge fuga hoge fuga # hoge fuga hoge fuga
所感
Makefileにそもそも組み込みの関数が存在することを知らなかったので、知ることが出来てよかった。