導入
CC を自分で定義しなくても、make は最初から CC = cc を知っています。こうした組み込み変数を知っておくと、Makefile がさらに短くなります。あわせて、レシピを実行せずに「何が走るか」だけを確認する make -n を覚えましょう。壊す前に確認できる安全装置です。
説明
make には最初からいくつかの変数が入っています。
| 変数 | 既定値 | 用途 |
|---|---|---|
CC | cc | Cコンパイラ |
CXX | g++ | C++コンパイラ |
RM | rm -f | 削除コマンド |
なので CC を定義しなくても $(CC) は使えます(上書きしたいときだけ書く)。
CFLAGS = -Wall -O2
app: main.c utils.c helper.c
$(CC) $(CFLAGS) -o app main.c utils.c helper.c
make -n(--dry-run)を使うと、レシピを実行せずに表示だけします。「この make で本当は何が走るのか?」を、ファイルを一切変えずに確認できます。大きなプロジェクトや clean を試す前の確認にとても便利です。
やってみよう
まず make -n を実行してください。cc -Wall -O2 -o app ... と表示されますが、ls してもまだ app はできていません(実行していないから)。次に make(-n なし)で本当にビルド。CC を定義していないのに cc が使われているのは、組み込み変数のおかげです。
演習
make -n を実行して、実行はせずに cc -Wall -O2 -o app main.c utils.c helper.c というコマンドが表示だけされることを確認しましょう。
ヒント1を見る
$(CC) は組み込みで cc になります。自分で CC = を書かなくても動きます。
ヒント2を見る
-n を付けると表示のみ。ls で app がまだ無いことを確かめられます。