Makefile: ビルド自動化
依存関係を定義して効率的にビルド。
make
ビルド自動化ツール。
ターゲット
生成するファイル。
.PHONY
ファイルを作らないターゲット。
Makefile
# Makefile の基本
# 変数CC = gccCFLAGS = -Wall -Wextra -g
# ターゲット: 依存ファイルmain: main.o utils.o $(CC) $(CFLAGS) -o main main.o utils.o
# パターンルール%.o: %.c $(CC) $(CFLAGS) -c $< -o $@
# PHONY ターゲット(ファイルを作らないターゲット).PHONY: clean all
clean: rm -f *.o main
all: clean mainBad
# ❌ Bad: 毎回手動でコンパイルgcc -c main.c -o main.ogcc -c utils.c -o utils.ogcc main.o utils.o -o mainGood
# ✅ Good: make で自動化make # ビルドmake clean # クリーンmake all # フルビルドパターン
# 自動変数# $@ - ターゲット名# $< - 最初の依存ファイル# $^ - すべての依存ファイル
# 完全な例CC = gccCFLAGS = -Wall -Wextra -std=c11LDFLAGS = -lm
SRC = main.c utils.c parser.cOBJ = $(SRC:.c=.o)TARGET = app
$(TARGET): $(OBJ) $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
%.o: %.c %.h $(CC) $(CFLAGS) -c $< -o $@
.PHONY: clean install
clean: rm -f $(OBJ) $(TARGET)
install: $(TARGET) cp $(TARGET) /usr/local/bin/ Tip: タブ文字が必須。スペースではエラー。
合格ライン
基本的な Makefile を書ける
$@, $<, $^ を使える