# GNU/Linux specific Make directives. # Declare tools. SHELL = /bin/sh CC = clang++ LD = clang++ ECHO = @echo CFLAGS = -std=c++17 -Wall -Wextra -Wno-unused-variable -Wno-unused-parameter LDFLAGS = -lncurses EXECUTABLE = Sparks SOURCES = main.cpp functions.cpp OBJECTS = $(SOURCES:.cpp=.out) CLEANFILES = *.out # To get a fully verbose make output do declare 'AT' at the command line like so: 'make AT='. # By default AT is undefined and thus assigned the string '@' which suppresses output from commands. AT ?= @ # Colors and efects ####################################### NORMAL = \033[m FG_DKGREEN = \033[32;7m FG_REDFULL = \033[31;7m FG_YELLOW = \033[33;7m FG_BLUE = \033[34;7m ########################################## .SUFFIXES: .cpp .out .PHONY: clean # Compile all: $(EXECUTABLE) .cpp.out: $(ECHO) "[$(FG_BLUE)COMPILING$(NORMAL)] $@" $(AT) $(CC) $(CFLAGS) -o $*.out -c $< $(EXECUTABLE): $(OBJECTS) $(ECHO) "[$(FG_YELLOW)LINKING$(NORMAL)] $(EXECUTABLE)" $(AT) $(LD) $(LDFLAGS) $(OBJECTS) -o $(EXECUTABLE) $(ECHO) "[$(FG_DKGREEN)SUCCESS$(NORMAL)] Run ./$(EXECUTABLE) to start your application, Enjoy :)" clean: $(ECHO) "[$(FG_REDFULL)CLEANED$(NORMAL)] $(CLEANFILES)" $(AT) rm -rf $(CLEANFILES)