10
37
95
Split down into component parts
on 10:18 AM Sep 23 2025
36
37
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Basic Makefile for a C program with multiple source files and header dependencies
CC = gcc
CFLAGS = -Wall -Wextra -g -O0 -MMD -MP -std=c17
SRC = $(wildcard coroutine/*.c) $(wildcard examples/*.c)
OBJ = $(SRC:.c=.o)
DEP = $(OBJ:.o=.d)
TARGET = main
all: $(TARGET)
$(TARGET): $(OBJ)
$(CC) $(CFLAGS) -o $@ $^
%.o: %.c
$(CC) $(CFLAGS) -I include -c $< -o $@
-include $(DEP)
clean:
rm -f $(OBJ) $(DEP) $(TARGET)
.PHONY: all clean
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 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