Makefile

유제민·2025년 4월 11일

42경산

목록 보기
15/17

Make와 Makefile 뭐예여

Make는 리눅스의 명령어로 파일관리 유틸리티다.
Make 명령어를 사용하면 반복적으로 수행해야하는 컴파일을 쉽게 만들어주고, Make 명령어를 사용할 때 Makefile이라는 설정 파일을 참조해서 컴파일이 이루어진다.
즉 Makefile은 참조할 설정 파일, Make는 libray 및 컴파일 환경, 실행 명령어 들을 관리 하는 명령어이다.

libft Makefile 구현

NAME = libft.a	//목표파일 이름 정하기
CC = cc	//사용할 컴파일러 (여기서는 cc = gcc)
CFLAGS = -Wall -Wextra -Werror	//컴파일 명령어 쓰기
AR = ar rcs	//오브젝트 파일들을 아카이브 하는 명령어(라이브러리 생성)
RM rm -f	//파일 삭제 명령어 (-f 옵션: 파일 없을 때 에러 안 남)

SRC = ft_atoi.c ft_bzero.c ft_calloc.c ft_isalnum.c ft_isalpha.c ft_isascii.c \ 
ft_isdigit.c ft_isprint.c ft_itoa.c ft_memchr.c ft_memcmp.c ft_memcpy.c \
ft_memmove.c ft_memset.c ft_putchar_fd.c ft_putendl_fd.c ft_putnbr_fd.c \
ft_putstr_fd.c ft_strchr.c ft_strdup.c ft_striteri.c ft_strjoin.c ft_strlcat.c \
ft_strlcpy.c ft_strlen.c ft_strmapi.c ft_strncmp.c ft_strnstr.c ft_strrchr.c \
ft_strtrim.c ft_substr.c ft_tolower.c ft_toupper.c ft_split.c 
//컴파일 할 필수 소스 파일 적기
BONUS_SRC = ft_lstnew.c ft_lstadd_front.c ft_lstsize.c ft_lstlast.c \
ft_lstadd_back.c ft_lstdelone.c ft_lstclear.c ft_lstiter.c ft_lstmap.c
//컴파일 할 보너스 소스 파일 적기
OBJ = $(SRC:.c=.o)	//소스파일(.c) -> 오브젝트 파일(.o)로 변환
BONUS_OBJ = $(BONUS_SRC:.c=.o)	//BONUS_SRC 파일을 .o 파일로 변환

BONUS_DONE = bonus_done_marker	//bonus 작업 완료 후 찍어놓을 빈 파일 이름

all: $(NAME)	//기본 목표, libft.a를 만든다.

$(NAME): $(OBJ)	//SRC를 컴파일해서 오브젝트(.o) 만들고 libft.a를 만든다.
	$(AR) $(NAME) $(OBJ)
	
bonus: $(BONUS_DONE)	//mandatory + bonus 오브젝트를 libft.a에 추가하고, marker 파일 만든다.

$(BONUS_DONE): $(OBJ) $(BONUS_OBJ)
	$(AR) $(NAME) $(BONUS_OBJ)
	touch $(BONUS_DONE)

clean:
	$(RM) $(OBJ) $(BONUS_OBJ) $(BONUS_DONE)	//모든 오브젝트(.o) 파일들과 bonus marker 파일을 삭제한다.

fclean: clean	//clean + libft.a까지 삭제한다.
	$(RM) $(NAME)

re: fclean all	//fclean 후 all을 다시 실행 (다시 빌드)

.PHONY: all clean fclean re //명령어 타겟임을 명시해서 make 오동작 방지한다.

증말 어려버요..

profile
무진장 게으른

1개의 댓글

comment-user-thumbnail
2025년 4월 12일

너무 성의가 없는 것 같아요 ~

답글 달기