Make: ビルドの自動化
毎回コマンドを打つのは疲れる。手順書(レシピ)を書いて自動化しよう。
Makefile
ビルド手順を記述したファイル。
ターゲット
生成したいファイル(例: app, main.o)。
依存関係
ターゲットを作るのに必要なファイル(例: main.c)。これが更新されると再ビルドが走る。
賢いビルドツール
ファイが増えると gcc a.c b.c c.c ... と打つのが大変になります。
make コマンドは、Makefile
という手順書に従ってビルドを自動化します。
すごいのは「更新されたファイルだけをコンパイルし直す(差分ビルド)」 点です。数千ファイルのプロジェクトでも、1行変えただけなら一瞬でビルドが終わります。
基本構文
Warning: Makefileのインデントには必ず「Tab」を使います。スペースを使うとエラーになります!
CC = gccCFLAGS = -Wall
# 最終成果物 app を作るルールapp: main.o math_utils.o $(CC) $(CFLAGS) -o app main.o math_utils.o
# main.o を作るルールmain.o: main.c $(CC) $(CFLAGS) -c main.c
# math_utils.o を作るルールmath_utils.o: math_utils.c $(CC) $(CFLAGS) -c math_utils.c
# お掃除clean: rm -f *.o app実践テクニック
変数を使う
<code>CC = gcc</code> や <code>CFLAGS = -Wall</code> のようにコンパイラやオプションを変数にしておくと、後で変更するのが簡単になります。
演習課題
課題1: 自動化
前のページで作った3つのファイルをビルドするMakefileを作成し、makeコマンド一発で実行ファイルができることを確認してください。
合格ライン
Makefileのインデントがタブであることを知っている
make clean で生成物を削除できる