make-advent-calendar-2017-to-2019

ターゲット

本来の使い方

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