make 주요 옵션


makefile 동작을 확인하고 싶을 때 -d-p 옵션을 사용해보는 것을 권장한다.

내장 매크로의 활용


<aside> 💡 make -p를 사용하여 내부 매크로를 확인할 수 있다.

make -r을 사용하여 내부 매크로를 제거할 수 있다.

</aside>

# 매크로 정의 
RM = rm -f
CC = cc
AR = ar

CFLAGS = -Wall -Wextra -Werror
ARFLAGS = rsc

SRCS = main.c read.c write.c
OBJS = main.o read.o write.o

NAME = test.a

# 타겟 정의
all: $(NAME)

$(NAME): $(OBJS)
	$(AR) $(ARFLAGS) $(NAME) $(OBJS)

clean:
	$(RM) $(OBJS)

fclean: clean
	$(RM) $(NAME)

re: fclean
	$(MAKE) all

.PHONY: all clean fclean re

# 의존성 정의
main.o: io.h main.c
	$(CC) $(CFLAGS) -c main.c
read.o: io.h read.c
	$(CC) $(CFLAGS) -c read.c
write.o: io.h write.c
	$(CC) $(CFLAGS) -c write.c
# 매크로 정의 
RM = rm -f  # default. 생략 가능
CC = cc     # default. 생략 가능
AR = ar     # default. 생략 가능

CFLAGS = -Wall -Wextra -Werror
ARFLAGS = rsc

SRCS = main.c read.c write.c
OBJS = $(SRCS:.c=.o)   # 치환 참조

NAME = test.a

# 타겟 정의
all: $(NAME)

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

clean:
	$(RM) $(OBJS)

fclean: clean
	$(RM) $(NAME)

re: fclean
	$(MAKE) all

.PHONY: all clean fclean re

# 의존성 정의 (전체 생략 가능)

의존성 생략

.SUFFIEXES 내장 매크로에 의해 확장자 규칙 패턴을 검사하는 항목이다.

내부적으로 기본으로 등록된 확장자가 있으면 내부 변수를 활용할 수 있다.