Makefile
Makefile のコマンドに @ をつけると、そのコマンド名が出力されない
.PHONY の意味
code:Makefile
foo:
@echo "foo"
上記のMakefile のとき、タスク名と同名の foo というファイルがあると、作業済みと認識されタスクが実行されない。
.PHONY: foo という記述を追加すると、同名のファイルが存在していても、タスクが必ず実行されるようになる
Makefileで使用できる特殊変数
table:特殊変数
変数名 役割
$@ ターゲット名
$% ターゲットメンバー名
$< 最初の必須項目
$? ターゲットよりも新しい必須項目全て
$^ 全ての必須項目 項目は重複しない
$+ 全ての必須項目 項目は重複する
$* ターゲット名 ただし、suffixがない
環境変数の使用
以下のような .env ファイルを用意し
code:.env
FOO="bar"
Makefileの先頭に以下のように include を追加する
code:Makefile
include .env
export
foo:
@echo "$(FOO)"
デフォルト変数
code:Makefile
PORT ?= 8080
foo:
echo "$(PORT)"
このとき
$ PORT=8888 make foo
とすると 8888 が出力される
参照・引用元
Makfile基本的書き方まとめ - KZKY memo
Makefiles for Web Work – Ross Zurowski