Makefile初めて触った。めっちゃ簡単だった

 · 3 min read

こんにちは。れこです。
makeというコマンド自体は何らかをインストールするときとかにたまに触るのですが、
自前でMakefileとやらを作ったことは今まで一度もなかった。

そんな私のはじめては「ISUCON 2016のGoの参考実装で使われていたので、触らざるを得なかった」という出会いでした。笑

「うわっmakeコマンド叩くやつだ」 とわけの分からない気構えをしていたのですが、
いざ触ってみたら学習コストほぼゼロで見やすくて使いやすいというとてもいいツールだったので簡単に紹介と備忘録を。

はじめに

Makefileが手に馴染んだのは、おそらく他のタスクランナーに触れたことがあるからな気がしています。
例えばGruntgulpはよく使ってます。

で結論として、gulpのようにストリームをベースにした(jsにロックインした)作りが必要でない限り、Makefileでいいんじゃなかろうかと感じました

makeには色々な種類があるらしいので、ここでは参考記事に則ってGNU makeに関して記述します。

Makefile の書き方 (C 言語) — WTOPIA v1.0 documentation

Makefileを作ってみる

今回はGoのビルドをしたいのでおそらくこんな感じになるのかと。

build: main.go
    go get -u github.com/kataras/iris/iris
    go build -v -o app main.go
任意のタスク名: 対象のファイル名
    先頭をタブでインデントし、実行するコマンドを改行区切りで記述

任意のタスク名2: 
    対象ファイルがなくてもいいらしい?

というとても簡素な書き方。

makeコマンドを叩いてみる

上記のMakefileだったらmakeもしくはmake buildで実行できます。
makeはタスク名を渡さなかった場合、ファイルないでもっとも先頭のタスクがデフォルトとして実行されるようです。

デフォルトでは、Makeは一番目のターゲットから開始します。このターゲットのことをデフォルトゴールと呼びます。

Makeについて知っておくべき7つのこと | インフラ・ミドルウェア | POSTD

まとめ

多機能すぎて現状いまいち掴みきれない
冒頭で学習コストゼロとか言ったのだれですか。最低限ならすぐ触れるけど奥が深すぎますよ。
調べれば調べるほど色んな機能が出てきて理解が追いつくのはいつの話になるのやら、という感じでした…

それでも軽く触りの部分だけ触っただけで、温故知新とはこのことかと感じました。
大袈裟すぎず、ちょうど手に収まるツールと言う感じがしました。
まだmake歴2日くらいなので、これからつらみやしぶみ、うまみを知って行きたいと思います。


本件とは全く関係ない蛇足。
Makefileというファイル名を見ていてふと気になったのですが、
今回のMakefile、DockerのDockerfile、vagrantのVagrantfile、HerokuのProcfileなどの{大文字から始まるツール名}fileというファイル名と、
.bowerrc.babelrc.editorconfigなどのドットから始まるファイル、なんかの派閥があるんでしょうか?

傍から見てると うまみうまあじ戦争 みたいだなーなんて思ってます。
うまみ派はgulpでも使ってればいいと思います

CLI
© 2012-2021 Leko