# Project structure SRCDIR = src BUILDDIR = build TARGET = bin/main # Compiler and flags CXX = g++ CXXFLAGS = -std=c++11 -Wall -Iinclude LDFLAGS = # Find all source files SRCS = $(wildcard $(SRCDIR)/*.cpp) # Generate object file names from source files OBJS = $(patsubst $(SRCDIR)/%.cpp,$(BUILDDIR)/%.o,$(SRCS)) # Default target all: $(TARGET) # Link the program $(TARGET): $(OBJS) @mkdir -p $(@D) $(CXX) $(LDFLAGS) -o $@ $^ # Compile source files into object files $(BUILDDIR)/%.o: $(SRCDIR)/%.cpp @mkdir -p $(@D) $(CXX) $(CXXFLAGS) -c -o $@ $< # Clean up clean: rm -rf $(BUILDDIR) bin # Run the program run: $(TARGET) ./$(TARGET) .PHONY: all clean run