Makefile

J_JEON·2022년 1월 18일
0

libft

목록 보기
44/44

NAME		= libft.a //최종적으로 만들어질 라이브러리의 이름

CC			= gcc //gcc나 clang과 같은 컴파일명령어
RM			= rm -rf //삭제 명령어 + Flags
CFLAGS		= -Wall -Wextra -Werror // 컴파일 flag

SRCS		= ft_memset.c ...

SRCS_BONUS	= ft_lstnew.c ...

OBJS		= $(SRCS:.c=.o) //srcs에 있는 .c를 모두 .o로 바꿔서 불러온다는것

OBJS_BONUS	= $(SRCS_BONUS:.c=.o)

ifdef WITH_BONUS //WITH_BONUS가 존재하면 보너스도 만듬(리링크 방지)
	OBJ_FILES = $(OBJS) $(OBJS_BONUS)
else
	OBJ_FILES = $(OBJS)
endif

all:		$(NAME)

debug :
	gcc -g ft_split.c libft.h

.c.o:
		${CC} ${CFLAGS} -g -c $< -o ${<:.c=.o} //g는 디버깅정보 c는 오브젝트파일 생성
        //c파일로 오브젝트를 만든다는것으로 gcc flags -g -c ~.c -o ~.o 이렇게 됨

$(NAME):	$(OBJ_FILES)
				ar crs $(NAME) $(OBJ_FILES) //ar은 파일을 모아 라이브러리로 압축하는 명령어, rcs는 플래그

bonus : 
	make WITH_BONUS=1 all

clean:
				$(RM) $(OBJS) $(OBJS_BONUS)

fclean:		clean
				$(RM) $(NAME)
				$(RM) libft.h.gch

re:			fclean $(NAME)

.PHONY:		bonus all clean fclean re //파일이름과 타겟이 혼용되지않게 여기 적어준것은 타겟으로 사용
profile
늅늅

0개의 댓글