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}
위와 같이 나타낼 수도 있다.
기타 규칙
NAMECFLAGS:-Wall등의 플래그 사용CC: 컴파일러 정의RM.c.oclean:rm ${OBJS}처럼 써서 오브젝트 파일 삭제함fcleanre:fclean all처럼 전부 지웠다가 다시 컴파일할 수 있음.PHONY: 파일로 해석하면 안되는 규칙들 정의