よしかわーるど

プログラミングで世界を変える

2018-09-26

Makefileを使ってみる

Makefileを使ってみる

どうも、よしかわです。

夏休みにVOYAGE GROUPにインターンに行ったときに、Makefileの素晴らしさに気付いたので、前回の記事を参考に紹介したいと思います!

前回の記事 CakePHP3をdockerで環境構築

参考するリポジトリは以下のリポジトリです。

YoshikawaTaiki/CakePHP3 docker

書き方

Makefileの書き方は以下のとおりです。

<マクロ宣言>

<タスク名>:
  <実行したいshell>

<タスク名>:<必要ファイル名>
  <実行したいshell>

変数宣言のようなことも出来ます!

マクロ

DBNAME:=myapp
TESTDBNAME:=test_myapp

サンプル

上記をまとめると以下のMakefileが出来ます。

DBNAME:=myapp
TESTDBNAME:=test_myapp

migrate/init:
	mysql -u root -h localhost --protocol tcp -e "create database \`$(DBNAME)\`" -p

migrate/test-init:
	mysql -u root -h localhost --protocol tcp -e "create database \`$(TESTDBNAME)\`" -p

migrate/up:
	docker-compose exec php bin/cake migrations migrate

migrate/down:
	docker-compose exec php bin/cake migrations rollback

migrate/status:
	docker-compose exec php bin/cake migrations status

migrate/seed:
	docker-compose exec php bin/cake migrations seed

docker/build:
	docker-compose build

docker/start:
	docker-compose up -d

docker/logs:
	docker-compose logs

docker/stop:
	docker-compose stop

docker/clean:
	docker-compose rm

web/bash:
	docker-compose exec web bash

db/bash:
	docker-compose exec db bash

php/bash:
	docker-compose exec php bash

composer/install:
	docker-compose exec php composer install

実際に使ってみましょう!

make migrate/init
mysql -u root -h localhost --protocol tcp -e "create database \`fieldsensing\`" -p
Enter password: 

このようにめちゃくちゃ長いコマンドをターミナルに打ち込まずに済むので便利です!

コンパイルするClangやGolangと一緒に使うと大変便利なので、最後に紹介します!

hello: hello.c
    gcc -o hello hello.c

ファイル指定も簡単に出来るので、Makefileを使うとコンパイルが楽になります!

以上でMakefileの紹介を終了します。お疲れ様でした!

参考文献

今更聞けないmakefileの書き方