1 분 소요


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
						# 타겟명과 파일명 충돌 회피


댓글남기기