2010년 8월 10일 화요일

A SUFFIX rule of MAKEFILE

본 문서는 Makefile의 SUFFIX rule에 대해서 간단히 기술 한다.

1. 개요
 - SUFFIX rule은 특정 확장자 이름의 소스 파일들과 또 다른 특정 확장자 이름의 결과 파일들 전체를 %기호로 대치 하는 것이다.

2. 특정 파일들을 컴파일 하기

===========================================================================
TARGET=spaghetti.bin
ELF_TARGET=spaghetti.elf
BINTOOL=fromelf
CC=tcc

$(TARGET): $(ELF_TARGET)
$(BINTOOL) -bin -o $@ $^

$(ELF_TARGET): spaghetti.o manipulation.o
$(CC) -o $@ $^

%o: %c                                        --------------> ①
$(CC) -c $@ $<                            --------------> ②
===========================================================================

*.c 파일들을 $(CC) == tcc 를 통해서 *.o 파일로 만들라는 명령
① %o : *.o 파일들, %c: *.c 파일들
② 주의점은 SUFFIX rule에서는 재료는 " $^ " 대신에 " $< "을 쓴다는 것이다.

3. 한 디렉토리의 모든 파일을 컴파일 하기
- Makefile은 한 디렉토리의 컴파일 되어야 하는 파일이 전부 *.c 파일이라면 아래와 같은 방법으로 소스 파일들을 특정 변수에 전부 넣은 후, 오브젝트 파일들을 소스파일에서 .c 만을 .o로 변경하여 특정변수에 넣어 작업 할 수 있도록 해준다.

SRC = $(wildcard *.c)
OBJECT = $(SRC:.c=.o)


 

댓글 없음:

댓글 쓰기