NAME = ft_ping CC = clang OBJSDIR = obj SRCDIR = src INCLUDES = includes SRCS = $(shell find $(SRCDIR) -name *.c) OBJS = $(SRCS:$(SRCDIR)/%.c=$(OBJSDIR)/%.o) DEPS = $(SRCS:$(SRCDIR)/%.c=$(OBJSDIR)/%.d) # $(info OBJ $(OBJS)) # $(info SRC $(SRCS)) FLAGS = -Wall -Werror -Wextra -MMD -MP -g RED = \033[0;31m GREEN = \033[0;32m YELLOW = \033[1;33m PURPLE = \e[0;35m NC = \033[0m DELETE = \x1B[2K\r ifeq ($(VERBOSE),true) FLAGS += -D VERBOSE endif all: $(NAME) $(NAME): $(OBJS) @$(CC) $(FLAGS) $(OBJS) -o $(NAME) @printf "$(YELLOW)「✨」($(NAME)) Program compiled\n" $(OBJSDIR)/%.o: $(SRCDIR)/%.c @mkdir -p $(@D) @$(CC) $(FLAGS) -I $(INCLUDES) -c $< -o $@ @printf "$(DELETE)$(GREEN)「🔨」($<) Object compiled\n" clean: @rm -rf $(OBJSDIR) @printf "$(DELETE)$(RED)「🗑️」($(OBJSDIR)) Object deleted\n" fclean: clean @rm -f $(NAME) @printf "$(RED)「🗑️」($(NAME)) Program deleted\n" re: fclean all .PHONY: clean fclean all re -include $(DEPS)