-d (--debug)
: Makefile 수행과 관련된 모든 정보 출력-p (--print-data-base)
: 내부적으로 세팅되어 있는 값 출력-r (--no-builtin-rules)
: 내부적으로 세팅되어 있는 값 제거-k (--keep-going)
: 에러가 발생해도 멈추지 말고 계속 진행-f 파일
: 명시된 파일을 사용하여 make 수행-C 디렉토리
: 명시된 디렉토리로 이동하여 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
내장 매크로에 의해 확장자 규칙 패턴을 검사하는 항목이다.
내부적으로 기본으로 등록된 확장자가 있으면 내부 변수를 활용할 수 있다.