Makefile
소프트웨어 개발을 위해 유닉스 계열 운영 체제에서 주로 사용하는 프로그램 빌드 도구
main.c
1
2
3
4
5
6
void hello();
int main()
{
hello();
}
test.c
1
2
3
4
5
6
#include <unistd.h>
void hello()
{
write(1,"hello world!/n",13);
}
위와 같은 두개의 파일이 있을 때 평소대로 컴파일을 하려면 gcc -c main.c test.c
와 gcc -o hello main.o test.o
의 명령어를 사용해서 번거롭게 작업을 해야한다. 하지만 Makefile을 활용하면 make 명령어 하나로 이 작업들을 한번에 실행할 수 있다.
Makefile
1
2
3
4
5
6
SRCS = main.c test.c
OBJS = ${SRCS:.c=.o}
all: ${OBJS} # 아래가 실행되기 위한 조건
gcc -o hello main.c test.c
주요 규칙
SRCS
: 컴파일할 소스파일OBJS
: 중간단계의 오브젝트 파일all
: 기본 빌드 규칙
1
2
3
4
5
6
7
8
SRCS = main.c test.c
OBJS = ${SRCS:.c=.o}
NAME = hello
${NAME}: ${OBJS}
gcc -o ${NAME} ${OBJS}
위와 같이 나타낼 수도 있다.
기타 규칙
NAME
CFLAGS
:-Wall
등의 플래그 사용CC
: 컴파일러 정의RM
.c.o
clean
:rm ${OBJS}
처럼 써서 오브젝트 파일 삭제함fclean
re
:fclean all
처럼 전부 지웠다가 다시 컴파일할 수 있음.PHONY
: 파일로 해석하면 안되는 규칙들 정의