Makefile 분석 관련 질문..^^;
blob 부트로더를 보게 되었는데요~ 흐음.. 너무 어렵네요..ㅜㅡ
보면.. @for dep in $?; do \ 이런한 문장이 있는데.. 아 도대체 무슨뜻이지..
정확한 해석을 못하겠습니다.~
물론 해석을 부탁드리는것은 아닙니다.ㅜㅡ 도통..자료를 찾을라고해도.. 저건 모르겠네요..
Makefile 관련된 내용을 간략하게 나마 보긴했는데... @for 이런문장들 나오면 짐작은 하겠는데..
정확하게 보는법을 모르겠습니다.
'@' 는 echo에서 명령어를 출력안하게 한다고 알고있었는데, 다른기능이 있는지요?
$? 는 echo $? 사용시 리턴값을 받을 수 있는걸로 알고있는데.. for 문을 실행하는데..
x$(리턴값)이 '0'일때까지 그안에잇는 case 문들을 실행하는지요?
힘드네요.ㅜㅡ
질문을 올려놓고도... 횡성수설이네요..ㅜㅡ 이런 관련자료 찾아볼 수 있을가요?ㅜㅜ
아시는분 답변 좀 부탁드리겠습니다.ㅜㅜ
.SUFFIXES:
.SUFFIXES: .S .c .o .obj
$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/blob/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu src/blob/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
bash, 즉 기본 쉘 문법
bash, 즉 기본 쉘 문법 아닌가요?
$?는 makefile문법으로 target보다 새로 만들어진 파일을 지칭하고
@for dep in $? 를 해석하면 dep라는 변수에 새로 만들어진 파일명이 각각 들어가게 되겠죠.
새로 만들어진 파일이 a.c, b.c라고 한다면... 첫번째 루프에서는 dep=a.c가 되고
두번째 루프에서는 dep=b.c가 되겠네요.
bash에서 for 조건 do ... done 문법을 찾아보시면 알 수 있습니다.
댓글 달기