Makefile relink 원인과 해결 방법

아래 Makefile에서 make 실행 시 relink 문제가 발생했다.
(어떤 부분이 문제일지 한 번 찾아보세요.)
CC = cc
CFLAGS = -Wall -Wextra -Werror
NAME = program
INCLUDES_DIR = ./includes
SRCS_DIR = ./srcs
SRCS = main.c
OBJS_DIR = ./objs
OBJS = $(addprefix $(OBJS_DIR)/, $(notdir $(SRCS:.c=.o)))
LIBFT_DIR= ./libft
LIBFT = libft.a
LIBS = $(LIBFT_DIR)/$(LIBFT)
.PHONY: all
all: $(NAME)
.PHONY: $(NAME)
$(NAME): $(OBJS)
make -C $(LIBFT_DIR)
$(CC) $(CFLAGS) $(DFLAGS) -o $(NAME) $(OBJS) $(LIBS)
$(OBJS_DIR):
mkdir -p $(OBJS_DIR)
$(OBJS_DIR)/%.o: $(SRCS_DIR)/%.c | $(OBJS_DIR)
$(CC) $(CFLAGS) $(DFLAGS) -c $< -o $@ -I$(INCLUDES_DIR) \
-I$(LIBFT_DIR)
# make와 관련 없는 clean, fclean, re는 제외
원인은 $(NAME) 위에 적은 .PHONY: $(NAME) 때문이었다.
make를 실행하고 program이 만들어졌어도 .PHONY에 $(NAME)이 등록되어있어서 무시하고 다시 컴파일된 것.
문제가 되는 부분을 지우면 relink가 되지 않는다.

