| # Basic Makefile for a C program with multiple source files and header dependencies |
|
| CC = gcc |
| CFLAGS = -Wall -Wextra -g -O0 -MMD -MP -std=c17 |
| EXAMPLES_SRC = $(wildcard examples/*.c) |
| EXAMPLES_OBJ = $(EXAMPLES_SRC:.c=.o) |
| EXAMPLES = $(patsubst examples/%.c, %, $(wildcard examples/*.c)) |
| LIB_SRC = $(wildcard coroutine/*.c) |
| LIB_OBJ = $(LIB_SRC:.c=.o) |
| OBJ = $(EXAMPLES_OBJ) $(LIB_OBJ) |
| DEP = $(OBJ:.o=.d) |
|
|
| all: $(EXAMPLES) |
|
| %: examples/%.o $(LIB_OBJ) |
| $(CC) $(CFLAGS) -o $@ $^ |
|
| %.o: %.c |
| $(CC) $(CFLAGS) -I include -c $< -o $@ |
|
| -include $(DEP) |
|
| clean: |
| rm -f $(OBJ) $(DEP) $(EXAMPLES) |
|
| .PHONY: all clean |
|