diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 41 |
1 files changed, 22 insertions, 19 deletions
@@ -5,38 +5,41 @@ CC=gcc CFLAGS=-std=c17 -Wall -Werror -g # Directory paths -src:=src -bin:=bin -obj:=obj +srcdir:=src +bindir:=bin +objdir:=obj # Files -srcs=$(filter-out $(src)/main.c, $(wildcard $(src)/*.c)) -objs=$(patsubst $(src)/%.c, $(obj)/%.o, $(srcs)) +srcfiles=$(filter-out $(srcdir)/main.c,$(wildcard $(srcdir)/*.c)) +objfiles=$(srcfiles:.c=.o) -# Directives .PHONY: build -build: $(bin)/$(proj) +build: $(bindir)/$(proj) .PHONY: clean clean: - -rm -r $(bin) $(obj) + -rm -r $(bindir) $(objdir) .PHONY: info info: - @echo srcs: $(srcs) - @echo objs: $(objs) + @echo srcfiles: $(srcfiles) + @echo objfiles: $(objfiles) -# 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 $<,$^) +.PHONY: run +run: build + $(bindir)/$(proj) # Make directories -$(bin): +$(bindir): mkdir $@ -$(obj): +$(objdir): mkdir $@ + +# Create object files +$(objdir)/%.o: $(objdir) $(srcfiles) + $(CC) $(CFLAGS) -o $@ -c $(patsubst %.o,$(srcdir)/%.c,$(notdir $@)) + +# Build executable including any object files +$(bindir)/$(proj): $(bindir) $(objfiles) $(srcdir)/main.c + $(CC) $(CFLAGS) -o $@ $(filter-out $<,$^) |
