C

거믄마루 2012. 11. 7. 09:00

오늘의 주제는 .PHONY


이 알 수 없는 규칙은 무엇인가?


다음과 같은 test.c 로 test 프로그램을 만드는 make 스크립트가 있다고 하자.


all: test
test: test.o 


이제 touch 명령으로 all 파일을 만들어 보자.


$ touch all
$ ls -al all
0 -rw-r--r-- 1 somebody somegroup 0 Nov  2 15:40 all


그리고 나서 make 명령을 내려보자.

어떤가? 


"make: `all' is up to date." -- 이러면서 make 가 되지 않는다.

이미 all 파일이 있으므로 규칙이 먹히질 않는 것이다.


바로 이럴때 .PHONY 규칙을 사용하는 것이다.

그러니까 .PHONY 에 등록해두면 가짜로 타겟을 지정할 수 있다... ㅋ


다음과 같이 수정하고 make 명령을 내려보자.


.PHONY: all

all: test
test: test.o 


아무런 문제없이 test 프로그램이 생성되는 것을 볼 수 있다...


보통 .PHONY 는 맨 윗줄에 다음과 같이 작성해두면 편리하다.


.PHONY: all debug release clean distclean ora-clean build rebuild install uninstall


조금 짧은 느낌이 들지만 오늘은 여기까지...


다음에는 디버그 모드와 릴리즈 모드를 쉽게 오갈 수 있는 make 스크립트를 작성하도록 해보자.