makefile문법은

타겟 : 재료

   명령

과 같은 형태로 이루어진다. 이때 타겟은 리눅스에서 파일이다. (clean, $(NAME) 등등 )

보통 커널에서 실행하기도 하는 gcc main.c 명령어는 main.c를 컴파일해서 a.out(리눅스에서 default 실행파일 값.. 윈도우라면 .exe)실행파일을 만드는 명령어이다.

우리는 보통 gcc에 옵션 -Wall -Wextra -Werror

까지 실행하는데,

a.out: main.c
gcc -Wall -Wextra  -Werror main.c

라고 쓰면 될 것이다. 근데 보통 makefile을 하는 경우는 컴파일하고자 하는 c파일들이 너무 많고 한번 변경 시 쉽게 빌드하는 것 (전체가 아니라 바뀐 부분만 다시 빌드할 수 있는 것: 증분이라고 한다.)이 목적이기 때문에, ‘하나만 바꿔도 나머지가 다 바뀌는 기적’을 원한다. (변수 설정- 명령어를 다 고치지지 않아도 된다: 변수에 대입되는 값만 바꾸면 파일, 종속파일, 명령어에 있는 건 변수이기 때문에 수정이 자동으로 됨 )

이걸 가능하게 할 수 있는 게 변수 설정이다.

CC = gcc

CFLAG =  -Wall -Wextra  -Werror

라고 미리 정해두고, 나중에 이 변수들로 명령을 구성하는 것이다.

이때 내부 매크로 사용도 가능하다.

  1. 내부 매크로 사용