Makefile 사용법
Makefile 사용법 정리
자주 쓰이는 매크로
CC = cc # 컴파일러
CFLAGS = -Wall -Wextra -Werror # CFLAG
TARGET = calculator # 최종적으로 만들 파일명
INC = XXXX # 헤더의 경로
AR = ar # 아카이브 명령어
CRS = crs # 아카이브 옵션
OBJS = XXXX # o파일
SRCS = XXXX # c파일
Makefile 규칙
기본 문법
<TARGET> : <DEFENDANCY>
<RECIPE>
TARGET : 최종 생성 파일명.
DEFENDANCY : TARGET을 만들기위해 필요한 재료.
RECIPE : TARGET을 생산하기위한 명령어
자동변수 시스템
$@
: Target
$<
: 첫째 Defendancy
$^
: 모든 Defendancy
$?
: Target보다 새롭게 변경된 Defendancy
.PHONY
파일명이 아니고 타겟명이라는 걸 명시하여 충돌을 피한다.
-C
디렉토리 설정
cp
Copy and Paste
$(addprefix (prefix)/name1 name2)
접두사 추가: (prefix)name1 (prefix)name2
$(addsuffix (suffix)/name1 name2)
접미사 추가: name1(suffix) name2(suffix)
예시 코드
SRCS = plus.c \
minus.c \
main.c \
OBJS = $(SRCS:.c=.o) # SRCS의 파일명들을 차용.
all: $(TARGET) # TARGET생성 기본 매크로
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@ # .o파일 생성
$(NAME): $(OBJS)
$(CC) $(CFLAGS) -o $@ $^ # 오브젝트파일 링킹
clean:
$(RM) $(OBJS)
# 오브젝트 파일 삭제
fclean: clean
$(RM) $(NAME)
# 오브젝트, 타겟 삭제
re: fclean all
# 최종 타겟 재생성
.PHONY: fclean all clean re
# 타겟명과 파일명 충돌 회피
댓글남기기