사용법
.SUFFIXES : .o .c .s # 여기서 사용할 확장자를 명시
.c.o :
$(CC) $(CFLAGS) -c $<
.s.o :
$(AS) $(ASFLAGS) -o $@ $<
- $(CFLAGS) 등의 명령 옵션을 변경할 경우는 make 는 명령을 다시 수행해야 한다는 것을 알 수 없다. make 는 오직 target 과 prerequisite 의 수정 시각을 가지고 판단한다.
확장자 규칙에서만 사용가능한 내부 매크로
$< : 필요 항목
$* : 필요 항목의 이름에서 확장자를 제외한 부분
library 의 사용
libops(interact.o) # libops 라이브러리 안에 포함된 interact.o 화일만 지정
${LIB}(interact.o)
libops((_parse)) # interact.o 안에 있는 _parse 모듈만 지정
라이브러리 안에 있는 둘 이상의 파일에 대해 각각 다른 명령을 사용할 경우 - 이중 콜론 사용
libops :: interact.c
${CC} O c DENTRY interact.c
ar r $@ interact.o
rm f interact.o
libops :: sched.c
${CC} O c DRECRD sched.c
주저리 주저리..
null 확장자
.c : # .c 파일로부터 확장자가 없는 이름의 화일을 만든다
$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@
규칙 무효화
기본 확장자 규칙이 작동하지 않도록 할 때:
.c.a :
true # 명령이 있어야 하므로 true (1) 을 사용한다
컴퓨터분류