Makefile
makeにしてほしいことを伝えるファイル
ファイル名はMakefileが推奨されている
インデントはタブである必要がある
code:Makefile
target: dependency, ...
command
...
commandの前につける記号
@: 実行時にコマンド名を表示しない
-: エラーが起きても後続の処理を続ける
両方書くときは@-
.PHONY
code:Makefile
.PHONY: clean
clean:
@-rm -f build/*
$のエスケープは$$
忘れがち
逆引き
ルートディレクトリを取得する
code:Makefile
ROOT_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
ヘルプをつける
code:Makefile
help: ## Display this help screen
@grep -E '^a-zA-Z_-+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' Makefileを分割して読み込む
code:Makefile
UNAME := $(shell uname -s)
ifeq ($(UNAME),Darwin)
include .config/macos/Makefile
endif
ifeq ($(UNAME),Linux)
include .config/linux/Makefile
endif
タスクAを実行したあとにタスクBを実行する
たとえば
code:makefile
next: ## 今日の Next Actions を出力する
today: ## 今日の日報を出力する
yesterday: ## 昨日の日報を出力する
report: next today yesterday ## 日報を出力する
commit: report ## 日報出力後、リポジトリ内の変更箇所をすべてコミットする
push: ## リモートリポジトリにプッシュする
all: commit push ## $ make commit push