🖥
Makefile – makeコマンドのサブコマンド複数を引数として利用することは出来るがコマンド干渉に注意
概要
本来 make コマンドは
make command1 command2
のようにサブコマンドは「複数のMakeを実行する」という意味なので、ここを引数として使うことは想定されていない。
だがハック的に対応することは出来る。
Makefileの例
$(filter-out $@,$(MAKECMDGOALS))
にサブコマンドの中身が入っている
echo:
@echo $(filter-out $@,$(MAKECMDGOALS))
以下コマンドを実行すると x y z
が標準出力される
make echo x y z
# x y z
注意
ただし注意が必要で x
y
z
サブコマンドがそれぞれ Makefileで定義されておらず無視されているだけで、実際には実行自体はされている
つまり以下のようにMakefileを書いていると
echo:
@echo $(filter-out $@,$(MAKECMDGOALS))
x:
@echo sub command X executed
y:
@echo sub command Y executed
しっかり x も y も実行されているのが分かる
make echo x y z
# x y z
# sub command X
# sub command Y
なのでサブコマンドをハックするよりも、素直にMakeの引数を使った方が干渉の危険がなくて安全そうだ
参考
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
プロフィール・経歴
公開日時
2024-03-18
Discussion