# - - - - - - # # # # COLORS # # # # - - - - - - # GRAY = "\e[0;30m" RED = "\e[0;31m" GREEN = "\e[0;32m" YELLOW = "\e[0;33m" BLUE = "\e[0;34m" PURPLE = "\e[0;35m" CYAN = "\e[0;36m" WHITE = "\e[0;37m" B_GRAY = "\e[1;30m" B_RED = "\e[1;31m" B_GREEN = "\e[1;32m" B_YELLOW = "\e[1;33m" B_BLUE = "\e[1;34m" B_PURPLE = "\e[1;35m" B_CYAN = "\e[1;36m" B_WHITE = "\e[1;37m" RESET = "\e[0m" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # . name = value \ . += append to a variable # # VARIABLES . value . != set result of command # # . name is case sensitive . ?= set if not already set # # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # NAME_1 = $(SRCS_1:.cpp=.out) NAME_2 = $(SRCS_2:.cpp=.out) NAME_3 = $(SRCS_3:.cpp=.out) NAME_4 = $(SRCS_4:.cpp=.out) NAME_5 = $(SRCS_5:.cpp=.out) CXX = c++ CXXFLAGS = -Wall -Wextra #-Werror CXXFLAGS += $(HEADERS_D:%=-I%) CXXFLAGS += -std=c++98 CXXFLAGS += -g VPATH = $(SRCS_D) HEADERS_D = . SRCS_D = . SRCS = cgi_utils.cpp SRCS_1 = cgi_cpp.cpp SRCS_2 = cgi_cpp_len.cpp SRCS_3 = cgi_cpp_len_big.cpp SRCS_4 = cgi_cpp_len_small.cpp SRCS_5 = cgi_cpp_status.cpp OBJS_D = builds OBJS = $(SRCS:%.cpp=$(OBJS_D)/%.o) OBJS_1 = $(SRCS_1:%.cpp=$(OBJS_D)/%.o) OBJS_2 = $(SRCS_2:%.cpp=$(OBJS_D)/%.o) OBJS_3 = $(SRCS_3:%.cpp=$(OBJS_D)/%.o) OBJS_4 = $(SRCS_4:%.cpp=$(OBJS_D)/%.o) OBJS_5 = $(SRCS_5:%.cpp=$(OBJS_D)/%.o) # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # . target: prerequisites . $@ : target # # RULES . recipe . $< : 1st prerequisite # # . recipe . $^ : all prerequisites # # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # all: cgi_1 cgi_2 cgi_3 cgi_4 cgi_5 cgi_1: $(NAME_1) cgi_2: $(NAME_2) cgi_3: $(NAME_3) cgi_4: $(NAME_4) cgi_5: $(NAME_5) $(OBJS_D)/%.o: %.cpp | $(OBJS_D) $(CXX) $(CXXFLAGS) -c $< -o $@ $(OBJS_D): mkdir $@ $(NAME_1): $(OBJS) $(OBJS_1) $(NAME_2): $(OBJS) $(OBJS_2) $(NAME_3): $(OBJS) $(OBJS_3) $(NAME_4): $(OBJS) $(OBJS_4) $(NAME_5): $(OBJS) $(OBJS_5) $(NAME_1) $(NAME_2) $(NAME_3) $(NAME_4) $(NAME_5): $(CXX) $^ -o $@ clean: rm -rf $(OBJS_D) fclean: clean rm -f $(NAME_1) rm -f $(NAME_2) rm -f $(NAME_3) rm -f $(NAME_4) rm -f $(NAME_5) re: fclean all .PHONY : all clean fclean re