CC = gcc CFLAGS = -Wall -MMD LDFLAGS = -lm SRCS = $(wildcard *.c) OBJS = $(SRCS:.c=.o) DEPS = $(OBJS:.o=.d) PRES = $(OBJS:.o=.i) TARGET = a.out all: $(TARGET) $(TARGET): $(OBJS) $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) -include $(DEPS) %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ $(LDFLAGS) # プリプロセスのみ実行して .i ファイルを出力 pre: @for f in $(SRCS); do \ base=$$(basename $$f .c); \ $(CC) -E $(CFLAGS) $(DEFS) $(INCDIR) $$f $(LDFLAGS) -o $$base.i; \ echo "Preprocessed $$f -> $$base.i"; \ done clean: rm -f $(OBJS) $(DEPS) $(TARGET) $(PRES)