動作しているように見えるこの Makefile がありますが、方法がわかりません:
EXECUTABLE=hello
CC=gcc
OBJS = a.o
all: $(EXECUTABLE)
%.o : %.c
$(CC) -o $@ -c $<
$(EXECUTABLE): $(OBJS)
$(CC) -o $@ $<
上の 3 行がローカル定義であることはわかっています。「Make」と入力すると、all
ターゲットがビルドされます。ここから、私は少し迷っています...私は推測しています:
- Makeは
$(EXECUTABLE)
ラベルを見て、そのビルドコマンドにジャンプします - ラベルが
$(OBJS)
表示a.o
され、ローカル ディレクトリに存在しないため、パターン マッチング ルールにジャンプします。 a.c
生成するルールを見つけて実行するa.o
- ここで Make はコマンドに戻り
$(EXECUTABLE)
、.o ファイルの組み合わせを実行して「hello」プログラムを作成します。
質問:
- その流れに対する私の理解は正しいですか?
- このファイルの「ラベル」の配置は適切ですか?
- これがどのように機能するかについての私の疑いを確認する、私が見逃しているいくつかの GNU ドキュメントはありますか?