読者です 読者をやめる 読者になる 読者になる

はむはむエンジニアぶろぐ

このブログのコンセプトは"ハッキングの為なら愛する家族を傷つけることをいとわない" 自分にとってエンジニアリングは "手段ではなく生きる目的" である

最強のビルドツール Makefile

Makefile インターフェイス

f:id:secret_hamuhamu:20150423012732j:plain
Q. 最強のビルドツールは誰だ?

A. Makefileです。(個人の勝手な見解です
私は、ビルドツールとしてMakefileを使っています。
ビルドだけでなくテストのラッパや便利コマンド集としても使います。

Makefileが最強だと思う理由は以下です。

覚えることが少ない

makeと入力した後にタブを押すとターゲット名を補完できるので、ターゲット名をど忘れしても大丈夫。
make buildとかmake testとかこれだけです。
簡単ですね。

ビルドの複雑さを隠せる

ビルドするために、1つ以上のコマンドが必要になるはずです。

.PHONY: build
build:
    ビルド準備1
    ビルド準備2
    ビルドコマンド --ignore_dir=hoge

これらの準備を意識せずに済みます。
それからビルドコマンドのオプションも意識する必要がなくなります。

横展開しても統一したインターフェース

例えば、プロジェクトAではGo言語をプロジェクトBではJaveを使っているとします。
プロジェクトAとプロジェクトBでは、もちろんビルド手順が違います。
しかし、手順は違えどビルドするという行為は変わりません。

プロジェクトAとプロジェクトBがMakefileを採用している前提での話ですが、プロジェクトAでmake build。
プロジェクトBに移動してもmake buildすることができます。
異なるアーキテクチャのプロジェクトに移動することがザラにあるのであれば効果を発揮します。

後方互換性を保てる

make buildの中に閉じ込めたビルドプロセスは、make buildというインターフェースを破壊せずにいつでも変更することができます。
つまり、make build内で使用しているビルドツールはいつでも差し替えることができます。
例えば、使っているビルドツールが廃れてきて新しいビルドツールを導入してもmake buildは変わらない。

Makefileの弱点

そんなMakefileさんにも弱点があります。
Windows環境で使えない!!