こんにちは。れこです。
make
というコマンド自体は何らかをインストールするときとかにたまに触るのですが、
自前でMakefileとやらを作ったことは今まで一度もなかった。
そんな私のはじめては「ISUCON 2016のGoの参考実装で使われていたので、触らざるを得なかった」という出会いでした。笑
「うわっmakeコマンド叩くやつだ」 とわけの分からない気構えをしていたのですが、
いざ触ってみたら学習コストほぼゼロで見やすくて使いやすいというとてもいいツールだったので簡単に紹介と備忘録を。
Makefileが手に馴染んだのは、おそらく他のタスクランナーに触れたことがあるからな気がしています。
例えばGruntやgulpはよく使ってます。
で結論として、gulpのようにストリームをベースにした(jsにロックインした)作りが必要でない限り、Makefileでいいんじゃなかろうかと感じました
makeには色々な種類があるらしいので、ここでは参考記事に則ってGNU makeに関して記述します。
今回はGoのビルドをしたいのでおそらくこんな感じになるのかと。
build: main.go
go get -u github.com/kataras/iris/iris
go build -v -o app main.go
任意のタスク名: 対象のファイル名
先頭をタブでインデントし、実行するコマンドを改行区切りで記述
任意のタスク名2:
対象ファイルがなくてもいいらしい?
というとても簡素な書き方。
上記のMakefileだったらmake
もしくはmake build
で実行できます。
makeはタスク名を渡さなかった場合、ファイルないでもっとも先頭のタスクがデフォルトとして実行されるようです。
デフォルトでは、Makeは一番目のターゲットから開始します。このターゲットのことをデフォルトゴールと呼びます。
多機能すぎて現状いまいち掴みきれない
冒頭で学習コストゼロとか言ったのだれですか。最低限ならすぐ触れるけど奥が深すぎますよ。
調べれば調べるほど色んな機能が出てきて理解が追いつくのはいつの話になるのやら、という感じでした…
それでも軽く触りの部分だけ触っただけで、温故知新とはこのことかと感じました。
大袈裟すぎず、ちょうど手に収まるツールと言う感じがしました。
まだmake歴2日くらいなので、これからつらみやしぶみ、うまみを知って行きたいと思います。
本件とは全く関係ない蛇足。
Makefileというファイル名を見ていてふと気になったのですが、
今回のMakefile
、DockerのDockerfile
、vagrantのVagrantfile
、HerokuのProcfile
などの{大文字から始まるツール名}file
というファイル名と、
.bowerrc
や.babelrc
、.editorconfig
などのドットから始まるファイル、なんかの派閥があるんでしょうか?
傍から見てると うまみうまあじ戦争 みたいだなーなんて思ってます。
うまみ派はgulpでも使ってればいいと思います