make は元々はCなどのソースコードをビルドするツールです。 みなさんはCなど知らないだろうし、知る必要もないですが、大丈夫。以下の説明にCの前提知識は別に必要ありません。 別にC専用というわけでもないので、例えば go の開発をするのに使うこともできます。
# hello という実行ファイルは `go build -o hello` というコマンドで作る。
hello:
go build -o hello
:
の手前の、作りたいファイル名のことを make の用語でターゲットといいます。
次の行からはターゲットの作り方を書きます。
ビルド手順を Makefile として書いてやれば、ソースコードやビルド手順には興味がなくビルド物だけに興味がある人でも、ビルド物を自分でビルドしてやることができます。便利ですね。
ターゲットはファイル名であるのが基本ですが、処理の名前のようなものをターゲットにしてやることもできます。(これを擬似ターゲットと言いますが、別に覚える必要はないです)
test:
go test -v ./...
昔から伝統的によく使われるターゲット名 test
などがあります。
これは自動化テストを実行する目的に使われます。
あなたがソースコードではなくビルド物だけに関心があるのだとしても、テストくらいはしたい。そんなときでも Makefile にテストするためのコマンドが書いてあれば便利ですね。
CI などで自動化テストを回すのにも便利です。
Makefileがあるディレクトリで、 make [ターゲット名]
としてやるとそのターゲットファイルを作るか、あるいは擬似ターゲットを実行します。
01-targetにサンプルのMakefileがあるので実行してみましょう
$ cd 01-target
$ make test
go test -v ./...
(以下略)
PASS
ok github.com/voyagegroup/make-advent-calendar-2017/01-target 0.006s