###################################### # COMMANDS # ###################################### CXX = c++ -c LINK = c++ MKDIR = mkdir -p RM = rm -rf ###################################### # EXECUTABLE # ###################################### NAME = ex01.out ####################################### # DIRECTORIES # ####################################### SRC_DIR = srcs/ OBJ_DIR = objs/ PRV_DIR = private/ ###################################### # SOURCE FILES # ###################################### SRC = \ ${addprefix class/, \ ClapTrap.cpp \ ScavTrap.cpp \ } \ main.cpp ###################################### # OBJECT FILES # ###################################### OBJ = ${SRC:.cpp=.o} OBJ := ${addprefix ${OBJ_DIR}, ${OBJ}} DEP = ${OBJ:.o=.d} ####################################### # FLAGS # ####################################### CPPFLAGS = -Wall -Wextra -Werror CPPFLAGS += -std=c++98 CPPFLAGS += -MMD -MP CPPFLAGS += -I${PRV_DIR} LDFLAGS = ifeq (${DEBUG}, 1) CPPFLAGS += -g CPPFLAGS += -DDEBUG=1 endif ####################################### # RULES # ####################################### ${NAME}: ${OBJ} ${LINK} ${OBJ} ${LDFLAGS} ${OUTPUT_OPTION} all: ${NAME} -include ${DEP} ${OBJ_DIR}%.o: ${SRC_DIR}%.cpp @${MKDIR} ${@D} ${CXX} ${CPPFLAGS} $< ${OUTPUT_OPTION} clean: ${RM} ${OBJ_DIR} ${NAME} vgcore.* fclean: ${RM} ${OBJ_DIR} ${NAME} vgcore.* re: clean all fre: fclean all .PHONY: all clean fclean re fre