# Declaration of variables C = clang COMMON_FLAGS = -Wall -MMD C_FLAGS = $(COMMON_FLAGS) CC = clang++ CC_FLAGS = $(COMMON_FLAGS) -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) $(COBJECTS) $(OBJECTS) -o $(EXEC) $(LD_FLAGS) # To obtain object files %.o: %.cpp $(CC) $(INCLUDES) $(CC_FLAGS) -o $@ -c $< # To obtain object files %.o: %.c $(C) $(INCLUDES) $(C_FLAGS) -o $@ -c $< -include $(SOURCES:%.cpp=%.d) -include $(CSOURCES:%.c=%.d) # To generate the documentation doc: doxygen Doxyfile # To remove generated files clean: rm -f $(COBJECTS) $(OBJECTS) $(SOURCES:%.cpp=%.d) $(CSOURCES:%.c=%.d) cleaner: clean rm -f $(EXEC)