Makefile 관련 질문입니다.

luftpalen의 이미지

열심히 위키를 탐독했는데 잘 이해가 안가서요..

일단 subdirectory 로 A, B 라는 디렉토리가 있고, 각각의 디렉토리에는 -c 옵션으로 컴파일을 할 수 있는 Makefile 이 있습니다.
그 상위 디렉토리에는 main.c 가 있는데, main.c 에는 A와 B 에 있는 함수들을 불러다 씁니다.

이 경우 상위, 하위 디렉토리 모두 컴파일을 해주는것을 잘 모르겠구요.. 즉 하위 디렉토리에 있는 Makefile 실행하는 것이요.

그리고 실행을 하였을때, main.c 가 하위디렉토리에 있는 오브젝트 파일을 링크를 못하는것 같습니다.
어떻게 하면 좋을지 몰라서 올립니다. 감사합니다 : )

ballon8016의 이미지

아무도 대답을 안 해주시니 혹시라도 도움이 되실까하고 말씀드려봅니다.
저같은 경우는 그냥 해당 오브제트 파일이 있는 경로를 지정해줘서 Makefile을 작성합니다.

꿈을 이룰수 있는 사람은 오직 꿈을 갖는 자만이다....

cinsk의 이미지

하위 디렉토리(예: src examples lib)에 있는 make를 실행하는 것은 보통 다음과 같이 합니다:

SUBDIRS=src lib examples
 
subsys-all:
        @for f in $(SUBDIRS); do \
                $(MAKE) -C "$$f" all; \
        done

하위 디렉토리에 있는 .o를 링크하는 방법은, "info make"해서 VPATH에 대해 알아보기 바랍니다.

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/