NAME = bureaucrat SRC = main.cpp \ Bureaucrat/Bureaucrat.cpp OBJ = $(SRC:.cpp=.o) CC = c++ CFLAGS = -Wall -Wextra -Werror -std=c++98 GREEN = \033[0;32m RED = \033[0;31m RESET = \033[0m TOTAL := $(words $(SRC)) COUNT = 0 all: $(NAME) $(NAME): $(OBJ) @rm -f .build_start @$(CC) $(CFLAGS) $(OBJ) -o $(NAME) @printf "\n$(GREEN)✔ Listo (100%%)\n$(RESET)" %.o: %.cpp @if [ ! -f .build_start ]; then printf "$(GREEN)Compilando archivos...\n$(RESET)"; touch .build_start; fi @$(eval COUNT = $(shell echo $$(($(COUNT)+1)))) @PERCENT=$$(($(COUNT)*100/$(TOTAL))); \ BAR=$$(printf "%0.s#" $$(seq 1 $$((PERCENT/5)))); \ SPACE=$$(printf "%0.s " $$(seq 1 $$((20-PERCENT/5)))); \ printf "\r [$$BAR$$SPACE] %3d%% (%d/%d) $< " $$PERCENT $(COUNT) $(TOTAL) @$(CC) $(CFLAGS) -c $< -o $@ clean: @printf "$(RED)Eliminando...\n$(RESET)" @rm -f $(OBJ) fclean: clean @rm -f $(NAME) re: fclean all .PHONY: all clean fclean re