Makefileは,コンパイル,依存関係の管理,インストールなどのルールを記述しておくためのファイルで,makeコマンドが読み込んで処理を行う.Makefileには,ファイルの生成手順や,プログラムを構成しているファイル同士の関係を記述する.
C/C++のコンパイルの定義を記述するのが一般的だが,普段使うコマンドを記述しておくのにも使える.
本記事は,C/C++のコンパイルではなく,単純なコマンド実行に焦点を当てている.
shell変数宣言
ターゲット名: 依存ファイル名
コマンド
makefile# docker-compose #
COMPOSE_UP = $(COMPOSE) up -d
COMPOSE_STOP = $(COMPOSE) stop
COMPOSE_DOWN = $(COMPOSE) down --rmi all
COMPOSE_LOGS = $(COMPOSE) logs
help: ## makeコマンド一覧
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
start: ## コンテナ立ち上げ
$(COMPOSE_UP)
stop: ## コンテナの停止
$(COMPOSE_STOP)
down: ## コンテナを停止し,upで作成したコンテナ,ネットワーク,ボリューム,イメージを削除
$(COMPOSE_DOWN)
log: ## 立ち上げているコンテナのログを表示
$(COMPOSE_LOGS)
上記のようなhelpコマンドを用意しておくと便利.実行すると以下のような出力が得られる.
コメントも出力されるので,ほかの人も使いやすい.
shell$ ls
Makefile docker-compose.yml
$ make help
help makeコマンド一覧
start コンテナ立ち上げ
stop コンテナの停止
down コンテナを停止し,upで作成したコンテナ,ネットワーク,ボリューム,イメージを削除
log 立ち上げているコンテナのログを表示