1 contributor
27 lines598 bytes
1# Basic Makefile for a C program with multiple source files and header dependencies
2
3CC = gcc
4CFLAGS = -Wall -Wextra -g -O0 -MMD -MP -std=c17
5EXAMPLES_SRC = $(wildcard examples/*.c)
6EXAMPLES_OBJ = $(EXAMPLES_SRC:.c=.o)
7EXAMPLES = $(patsubst examples/%.c, %, $(wildcard examples/*.c))
8LIB_SRC = $(wildcard coroutine/*.c)
9LIB_OBJ = $(LIB_SRC:.c=.o)
10OBJ = $(EXAMPLES_OBJ) $(LIB_OBJ)
11DEP = $(OBJ:.o=.d)
12
13all: $(EXAMPLES)
14
15%: examples/%.o $(LIB_OBJ)
16 $(CC) $(CFLAGS) -o $@ $^
17
18%.o: %.c
19 $(CC) $(CFLAGS) -I include -c $< -o $@
20
21-include $(DEP)
22
23clean:
24 rm -f $(OBJ) $(DEP) $(EXAMPLES)
25
26.PHONY: all clean
27