proj=tdo # Compiler options CC=gcc CFLAGS=-std=c17 -Wall -Werror -g # Directory paths src:=src bin:=bin obj:=obj # Files srcs=$(filter-out $(src)/main.c, $(wildcard $(src)/*.c)) objs=$(patsubst $(src)/%.c, $(obj)/%.o, $(srcs)) # Directives .PHONY: build build: $(bin)/$(proj) .PHONY: clean clean: -rm -r $(bin) $(obj) .PHONY: info info: @echo srcs: $(srcs) @echo objs: $(objs) # Make object files $(obj)/%.o: $(srcs) $(obj) $(CC) $(CFLAGS) -o $@ -c $< # Build executable including any object files $(bin)/$(proj): $(bin) $(objs) $(src)/main.c $(CC) $(CFLAGS) -o $@ $(filter-out $<,$^) # Make directories $(bin): mkdir $@ $(obj): mkdir $@