Makefileの使い方
Makefile
Makefileとは
Makefileは,コンパイル,依存関係の管理,インストールなどのルールを記述しておくためのファイルで,makeコマンドが読み込んで処理を行う.Makefileには,ファイルの生成手順や,プログラムを構成しているファイル同士の関係を記述する.
- makeコマンドとは コンパイル作業を行うために様々な作業を自動的に行うためのコマンド.
C/C++のコンパイルの定義を記述するのが一般的だが,普段使うコマンドを記述しておくのにも使える.
本記事は,C/C++のコンパイルではなく,単純なコマンド実行に焦点を当てている.
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コマンドを用意しておくと便利.実行すると以下のような出力が得られる.
コメントも出力されるので,ほかの人も使いやすい.
$ ls
Makefile docker-compose.yml
$ make help
help makeコマンド一覧
start コンテナ立ち上げ
stop コンテナの停止
down コンテナを停止し,upで作成したコンテナ,ネットワーク,ボリューム,イメージを削除
log 立ち上げているコンテナのログを表示