#Compiler and Linker CC := g++ #The Target Binary Program TARGET := out.exe #The Directories, Source, Includes, Objects, Binary and Resources SRCDIR := src BUILDDIR := bin TARGETDIR := out SRCEXT := cpp DEPEXT := d OBJEXT := o #Flags, Libraries and Includes ROOT := ./ CFLAGS := -std=c++20 -O2 \ -Wall -Wextra \ -Wshadow -Wnon-virtual-dtor -Wold-style-cast -Wcast-align \ -Wunused -Woverloaded-virtual -Wconversion \ -Wsign-conversion -Wnull-dereference -Wdouble-promotion \ -Wformat=2 -Wimplicit-fallthrough -Wsuggest-override \ -Wextra-semi -Wduplicated-cond -Wduplicated-branches \ -Wlogical-op -Wuseless-cast LFLAGS := -std=c++20 -static-libstdc++ -static-libgcc \ -Wl,--fatal-warnings -Wl,--warn-common LIB := INC := -I./src/ #--------------------------------------------------------------------------------- #DO NOT EDIT BELOW THIS LINE #--------------------------------------------------------------------------------- SOURCES := $(shell find $(SRCDIR) -type f -name *.$(SRCEXT)) OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.$(OBJEXT))) #Defauilt Make all: directories $(TARGET) #Remake remake: cleaner all #Make the Directories directories: @mkdir -p $(TARGETDIR) @mkdir -p $(BUILDDIR) #Clean only Objecst clean: @$(RM) -rf $(BUILDDIR) #Full Clean, Objects and Binaries cleaner: clean @$(RM) -rf $(TARGETDIR) #Pull in dependency info for *existing* .o files -include $(OBJECTS:.$(OBJEXT)=.$(DEPEXT)) #Link $(TARGET): $(OBJECTS) $(CC) $(LFLAGS) -o $(TARGETDIR)/$(TARGET) $^ $(LIB) #Compile $(BUILDDIR)/%.$(OBJEXT): $(SRCDIR)/%.$(SRCEXT) @mkdir -p $(dir $@) $(CC) $(CFLAGS) $(INC) -c -o $@ $< @$(CC) $(CFLAGS) -MM $(SRCDIR)/$*.$(SRCEXT) > $(BUILDDIR)/$*.$(DEPEXT) @cp -f $(BUILDDIR)/$*.$(DEPEXT) $(BUILDDIR)/$*.$(DEPEXT).tmp @sed -e 's|.*:|$(BUILDDIR)/$*.$(OBJEXT):|' < $(BUILDDIR)/$*.$(DEPEXT).tmp > $(BUILDDIR)/$*.$(DEPEXT) @sed -e 's/.*://' -e 's/\\$$//' < $(BUILDDIR)/$*.$(DEPEXT).tmp | fmt -1 | sed -e 's/^ *//' -e 's/$$/:/' >> $(BUILDDIR)/$*.$(DEPEXT) @rm -f $(BUILDDIR)/$*.$(DEPEXT).tmp #Non-File Targets .PHONY: all remake clean cleaner resources