# Declaration of variables C = clang C_FLAGS = -Wall CC = clang++ CC_FLAGS = -Wall -std=c++17 LD_FLAGS = INCLUDES = # File names EXEC = run CSOURCES = $(wildcard *.c) COBJECTS = $(CSOURCES:.c=.o) SOURCES = $(wildcard *.cpp) OBJECTS = $(SOURCES:.cpp=.o) # Main target $(EXEC): $(COBJECTS) $(OBJECTS) $(CC) $(LD_FLAGS) $(COBJECTS) $(OBJECTS) -o $(EXEC) # To obtain object files %.o: %.cpp $(CC) $(INCLUDES) $(CC_FLAGS) -o $@ -c $< # To obtain object files %.o: %.c $(C) $(INCLUDES) $(C_FLAGS) -o $@ -c $< # To remove generated files clean: rm -f $(COBJECTS) $(OBJECTS) cleaner: rm -f $(EXEC) $(COBJECTS) $(OBJECTS)