상세 컨텐츠

본문 제목

Makefile 문법 쉽게 설명하기. (기본적인 make file 문법 설명)

IT : Ubuntu

by 인포개더러 2014. 2. 20. 01:31

본문



Makefile 문법 쉽게 설명하기. (make file 문법 설명)


안드로이드를 공부하거나 Linux 또는 Ubuntu kernel 등을 공부 하려는 사람은 Makefile 문법에 대해 알고 있어야 합니다. 간단히 프로그래밍을 공부하는 사람도 Makefile 을 작성할 수 있으면 build 과정을 보다 쉽게 끝낼 수 있습니다.


그럼 Makefile을 만드는 방법과 문법에 대해 알아 보겠습니다.


Makefile 의 기본은 만들려는 것과 그에 필요한 구성물을 나열하는 것 입니다.


TargetObject : dependencies_1, dependencies_2

command args1 args2 args3


이를 풀어 설명하자면


만들것 : "만들것"을 만드는데 필요한 구성요소

만들기 위해 필요한 명령 1

만들기 위해 필요한 명령 2


그럼 실제 예로 들어보겠습니다.


car : body.o engine.o wheel.o

gcc -o car body.o engine.o wheel.o

body.o : body.c

gcc -c body.c

engine.o : engine.c

gcc -c engine.c

wheel.o : wheel.c

gcc -c wheel.c


이 내용을 Makefile 이라는 파일로 저장 후 저장된 폴더에서 make 라고 실행하면 빌드가 실행 됩니다.

실행 순서는


gcc -c body.o

gcc -c engine.o

gcc -c wheel.o

gcc -o car body.o engine.o wheel.o


순서 입니다.


Makefile 을 좀더 세분화 해서 사용하려면 아래의 내용을 참고하면 됩니다.


body.o 만을 만들고 싶을 경우


$ make body.o


기본 Makefile 이 아닌 다른 이름의 Makefile 을 사용하고 싶은 경우 -f 옵션으로 실행 가능합니다.


$ make -f otherMakefile body.o


여러개의 파일들을 한꺼번에 빌드하고 싶을 경우 % 를 사용하면 됩니다.


%.o : %.c

gcc -c -o $@ ${CFLAGS} $<


위의 실행 명령 부분을 보면 여러가지 문법이 적용되어 있습니다.


%.o : %.c 는 폴더내 모든 .c 파일에 대해 .o 파일을 만들며 

-o $@ 실제 최종 목적물의 이름을 나타냅니다.

${CFLAGS} 는 CFLAGS 라는 쉘 변수를 넣어주어 실행시 컴파일 옵션을 조정할 수 있도록 해 줍니다.

$< 는 %.c 의 파일들이 들어갑니다.


Make 명령 실행시 Standard out 으로 메시지를 출력하지 않으려면 @ 옵션을 붙여 명령을 실행하면 됩니다.


Makefile 에서 Shell 명령어(쉘 명령어)를 실행 시키고자 할 경우


shellcommand :

ls -al


위 와 같이 Makefile 을 작성 후 아래 처럼 명령을 실행 시키면 됩니다. 실행 command 적는 곳에 그냥 shell command 를 써주기만 하면 됩니다.


$ make shellcommand


주의 하여야 할 점은 Makefile 에서 한 폴더에서 같은 명령을 모두 실행 해야 할 경우. 예를 들어 cd 명령으로 폴더를 이동했다면 명령어 끝에 \ 를 적어주고 다음줄에 새로운 명령을 써야 cd 로 폴더 이동한 곳에서 다음 명령이 실행 됩니다.


shellcommand :

mkdir temp; \

cd temp; \

touch test.txt; \

NEW_DIR=temp2; \

mkdir $$NEW_DIR;


\ 가 빠지면 test.txt 파일은 temp 폴더 내부가 아닌 Makefile 이 있는 폴더에 만들어지게 됩니다.

그리고 NEW_DIR 이라는 변수를 사용하려면 $$ 를 붙여 사용하여야 합니다.


; 는 같은 폴더에서 실행해야 하는 명령어가 아니라 \ 가 없다면 생략해도 됩니다.


또 하나의 주의할 점은 TargetObject를 만들기 위해 실행 명령을 쓸때 제일 앞에 반드시 <TAB> 문자를 넣어 주어야 한다는 것 입니다. TAB 으로 명령과 Object 를 구별하게 됩니다.


이상 Makefile 문법 쉽게 설명하기. (기본적인 make file 문법 설명)에 대한 글 이였습니다.



관련글 더보기