【めいくふぁいる】
Makefile とは?
最終更新:
💡 材料と作り方を伝えて、必要なところを作り直す
Makefileは、makeが読み込む、ターゲット・前提となるファイル・実行するコマンドを記述した手順書。GNU makeでは、ファイルの有無や更新時刻などを見て、必要な処理を進める。
📌 このページのポイント
- ターゲット、前提となるファイル、実行コマンドでルールを表す
- 通常のコマンド行は、行頭をタブで始める
- 成果物がない、または前提のファイルが新しければ更新する
- ファイルを作らない処理には.PHONYなどの指定を使う
Dockerfileと同じものなの?
Makefileはmakeに処理の手順や依存関係を伝えるファイルだよ。Dockerfileがコンテナのイメージを作る手順なのに対し、Makefileはプログラムのビルドや、テストなどのコマンドをまとめる用途に使えるんだ。
どんなルールを書くの?
たとえばapp: main.o util.oなら、appを作る前提がmain.oとutil.oだと伝えるよ。その下に、作るためのコマンドを書く。通常のコマンド行の先頭はスペースでなくタブなので、エディターの設定も確認しよう。
全部作り直すの?
内容の違いを自動で全部見つけるの?
基本の判断はファイルの更新時刻などだよ。ファイルの内容を毎回比較するわけではないし、書いていない依存関係まで自動で全部分かるわけでもない。必要な材料や手順を正しく記述することが大切なんだ。
テストの実行にも使える?
使えるよ。ファイルを作る目的でないターゲットは、.PHONYでその名前を指定する方法がある。同じ名前のファイルがあっても処理を実行できるようにするんだ。Makefileがコマンドをまとめ、実際の作業は呼び出す道具が行うと考えよう。
まとめ:ざっくりこれだけ覚えればOK!
「Makefile」って出てきたら「makeに材料と作り方を伝える手順書」と思えばだいたいOK!
📖 おまけ:英語の意味
「Makefile」 = makeの手順を記述するファイル
💬 makeは「作る」、fileは「ファイル」。Makefileはよく使う名前で、GNU makeはGNUmakefileやmakefileも探す。-fで別の名前を指定することもできるよ。