재귀적으로 make 사용 : {{{makefile OBJS = fig/fill.o \ # 상위디렉토리에서 하위디렉토리의 화일에 대한 의존관계 설정 fig/rotat.o \ structops/allocate.o \ structops/delete.o disp: fig_obj structops_obj # 더미 필요 항목을 설정하여 반드시 실행되도록 한다. ${CC} ${LDFLAGS} -o $@ ${OBJS} fig_obj: cd fig ; make all # 하위 디렉토리로 이동하여 make all 을 실행 struct_obj: cd structops ; make all }}} * makefile 내에서 ${MAKE} 를 사용할 경우, -f, -d, -p 등 일부를 제외한 나머지 옵션이 그대로 전달된다. * 사용자가 정의한 매크로는 자동으로 전달되지 않는다. 다음처럼 직접 전달해 주어야 한다. {{{makefile ${MAKE} "CFLAGS=${CFLAGS}" }}} * 내부 매크로에서의 디렉토리 - D 변경자와 F 변경자 사용 {{{makefile modules : /usr/jobstor/sys/io.o /usr/jobstor/work/math.o cd ${<D} ; make ${<F} # 차례대로 # cd /usr/jobstor/sys ; make io.o # cd /usr/jobstor/work ; make math.o # 를 실행한다. }}} * viewpath (VPATH) 매크로 ** VPATH = mysrc:${DIRS} 등과 같이 지정할 수 있다. ** 필요 항목을 찾을 때 VPATH 에 지정된 경로를 차례대로 검색한다. ** 확장자규칙에 의해 묵시적으로 지정된 필요항목을 찾을 때는 적용되지 않는다 |
OBJS = fig/fill.o \ # 상위디렉토리에서 하위디렉토리의 화일에 대한 의존관계 설정 fig/rotat.o \ structops/allocate.o \ structops/delete.o disp: fig_obj structops_obj # 더미 필요 항목을 설정하여 반드시 실행되도록 한다. ${CC} ${LDFLAGS} -o $@ ${OBJS} fig_obj: cd fig ; make all # 하위 디렉토리로 이동하여 make all 을 실행 struct_obj: cd structops ; make all
${MAKE} "CFLAGS=${CFLAGS}"
modules : /usr/jobstor/sys/io.o /usr/jobstor/work/math.o cd ${<D} ; make ${<F} # 차례대로 # cd /usr/jobstor/sys ; make io.o # cd /usr/jobstor/work ; make math.o # 를 실행한다.