Dyuichi Blog

Makefileの使い方

Makefile

Makefileとは

Makefileは,コンパイル,依存関係の管理,インストールなどのルールを記述しておくためのファイルで,makeコマンドが読み込んで処理を行う.Makefileには,ファイルの生成手順や,プログラムを構成しているファイル同士の関係を記述する.

C/C++のコンパイルの定義を記述するのが一般的だが,普段使うコマンドを記述しておくのにも使える.

本記事は,C/C++のコンパイルではなく,単純なコマンド実行に焦点を当てている.

Makefileのメリット
  • 変更差分だけコンパイルしなおすことができ,手間を減らせる.
  • チーム内でコンパイルのルールを統一可能.
  • コマンド実行の手間を省くことができる.
  • 必要なコマンドをまとめておけば,途中参加でもスムーズに開発に入りやすい.

書式
shell変数宣言

ターゲット名: 依存ファイル名
  コマンド

記述例

Makefile
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コマンド

上記のようなhelpコマンドを用意しておくと便利.実行すると以下のような出力が得られる.

コメントも出力されるので,ほかの人も使いやすい.

shell$ ls
Makefile docker-compose.yml
$ make help
help                           makeコマンド一覧
start                          コンテナ立ち上げ
stop                           コンテナの停止
down                           コンテナを停止し,upで作成したコンテナ,ネットワーク,ボリューム,イメージを削除
log                            立ち上げているコンテナのログを表示

参考文献