2. Wildcard, Phony Target, Empty Target Usage

Program Lang./Makefile 2012. 12. 8. 14:57

1. Wildcard를 이용한 Target, Prerequisite 구성

 

make에서 wildcard (~, *, ?, [...], [^...]) 사용은 Born Shell상에서 사용법과 동일하다. 

 

prog : *.c

$(CC) -o $@ $^                                         # $@ : 현재 Target , $^ : 현재 Prerequisite

 

 

2. Phony Targets

 

일반적으로 Target과 Prerequisite에는 업데이트될 파일에 대한 파일 이름을 기술하였다. 하지만 Phony Target 은

파일 이름이 아닌 단순 라벨(Label)로 기술된다. Phony Target은 파일 이름을 기술하지 않기 때문에 항상 업데이트

되야할 타겟이다. 일반적으로 Prerequisite를 가지지 않는 구조이다.

 

실제 make는 Phony Target과 일반 파일 이름의 타겟을 구분하지 못한다. 이를 구분하기 위해서 make는

Phony Target을 지정하는 지정자 (.PHONY)를 통해서 명시적으로 Phony Target를 지정할 수 있다.  (아래 예제 참조)

 

.PHONY : all clean

clean :

rm -rf *.o *.exe  

 

이미 make에 지정된 표준 Phony Target이 존재한다. 이는 아래와 같다.

 

 

Target 

설명 

 all

 일반적으로 실행파일을 빌드하기 위해 필요한 타겟리스트를 명시한다.

 install

 실행파일을 설치할 목적

 clean

 소스 파일로부터 생성된 바이러리 파일 삭제

 distclean

 소스 이외의 모든 파일 삭제

 TAGS

 테그 생성

 info

 정보 출력

 check

 테스트 목적

 

 

3. Empty Targets

 

위의 Phony Target은 항상 업데이트되어야 타겟이다. 하지만 경우에 따라서는 필요할 때만 업데이트를 원할 때

가 있을 것이다. 이런 요구 사항을 만족하기 위해서 필요한 Target이 Empty Target이다.

예제는 아래와 같고 이런 타겟이 있다라고만 한번 보고 넘어간다.

 

prog : size prog.o

$(CC) $(LDFLAGS) -o $@ $^

size : prog.o                                            # prog.o가 prerequisite로 사용되었다.

size $^

touch size

 

 

: