활동/42서울

Makefile 예시

nextcoder 2022. 2. 5. 21:15

 

# **************************************************************************** #
#                                                                              #
#                                                         :::      ::::::::    #
#    Makefile                                           :+:      :+:    :+:    #
#                                                     +:+ +:+         +:+      #
#    By: seongwki <seongwki@student.42.kr>          +#+  +:+       +#+         #
#                                                 +#+#+#+#+#+   +#+            #
#    Created: 2022/01/11 01:13:45 by seongwki          #+#    #+#              #
#    Updated: 2022/02/04 23:39:12 by seongwki         ###   ########.fr        #
#                                                                              #
# **************************************************************************** #

NAME = libft.a

#변수 설정
CC = gcc #컴파일러. (내장 변수)
CFLAGS = -Wall -Wextra -Werror #컴파일러 옵션. (내장 변수)
AR = ar rcs #ar : 라이브러리(아카이브 파일) 만들기 r: 파일 만들기 c: 새로운 라이브러리를 만들 때 주의 표시 하지 않기 s:함수의 인덱스 추가
RM = rm -f

FILES = ft_isalpha \
		ft_isdigit \
		ft_isalnum \
		ft_isascii \
		ft_isprint \
		ft_strlen \
		ft_memset \
		ft_bzero \
		ft_memcpy \
		ft_memmove \
		ft_strlcpy \
		ft_strlcat \
		ft_toupper \
		ft_tolower \
		ft_strchr \
		ft_strrchr \
		ft_strncmp \
		ft_memchr \
		ft_memcmp \
		ft_strnstr \
		ft_atoi \
		ft_calloc \
		ft_strdup \
		ft_substr \
		ft_strjoin \
		ft_strtrim \
		ft_split\
		ft_itoa\
		ft_strmapi\
		ft_striteri\
		ft_putchar_fd\
		ft_putstr_fd\
		ft_putendl_fd\
		ft_putnbr_fd


SRCS_DIR = ./
SRCS = $(addprefix $(SRCS_DIR), $(addsuffix .c, $(FILES))) # ./파일.c

OBJS_DIR = ./
OBJS = $(addprefix $(OBJS_DIR), $(addsuffix .o, $(FILES))) # ./파일.o

#확장자 규칙 구현. c를 o로 만들어라
.c.o: $(SRCS)
	$(CC) $(CFLAGS) -c -o $@ $< # 자동 변수 사용

# $@ : 현재의 목표 파일. (.c.o)
# $^ : depend의 첫 번째 파일 이름


$(NAME): $(OBJS)
	$(AR) $@ $^

all: $(NAME)

clean:
	$(RM) $(OBJS)

fclean: clean
	$(RM) $(NAME) #실행파일도 삭제

re: fclean all #fclean 실행 후 다시 make

.PHONY: all clean fclean re # 동명의 파일이 있더라도 실행시킨다.