40 lines
674 B
Makefile
40 lines
674 B
Makefile
# Compiler and flags
|
|
CC = gcc
|
|
CFLAGS = -Wall -Ilib
|
|
|
|
# Directories
|
|
SRCDIR = src
|
|
LIBDIR = lib
|
|
BINDIR = bin
|
|
OBJDIR = obj
|
|
|
|
# Source files
|
|
LIB_SOURCES = $(wildcard $(LIBDIR)/*.c)
|
|
SRC_SOURCES = $(wildcard $(SRCDIR)/*.c)
|
|
|
|
# Object files
|
|
LIB_OBJECTS = $(LIB_SOURCES:$(LIBDIR)/%.c=$(OBJDIR)/%.o)
|
|
|
|
# Executables
|
|
EXECS = $(SRC_SOURCES:$(SRCDIR)/%.c=$(BINDIR)/%)
|
|
|
|
# Create necessary directories
|
|
$(shell mkdir -p $(OBJDIR))
|
|
$(shell mkdir -p $(BINDIR))
|
|
|
|
# Rules
|
|
all: $(EXECS)
|
|
|
|
$(BINDIR)/%: $(SRCDIR)/%.c $(LIB_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $< $(LIB_OBJECTS)
|
|
|
|
$(OBJDIR)/%.o: $(LIBDIR)/%.c
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
clean:
|
|
rm -f $(OBJDIR)/*.o
|
|
rm -f $(BINDIR)/*
|
|
|
|
.PHONY: all clean
|
|
|