make에 관한 질문입니다.

살자의 이미지

안녕하세요..

하나의 make파일로 서브 디렉토리에 있는 소스파일도 컴파일이 가능한지여..
가능하다면 방법을 알고 싶습니다.

또 만약 위에 질문이 가능하지만 효율적이지 않다면 더 좋은 방법은 어떤것이 있는지 궁금합니다.

그럼 고수님의 조언 부탁드립니다...^^

yeppiguy의 이미지

LD = gcc
CC = gcc
OBJS = subdir1/src1.o subdir1/src2.o ....

$(target): $(OBJS)
        $(LD) -o $@ $(OBJS)
.c.o:
        $(CC) $(CFLAGS) -o $@ $*.c

요렇게 하시면 됩니다.
근데, 일일이 디렉토리를 다 명시해야 하는데 귀찮지 않을까요?
차라리 모듈별로 관리하시는 디렉토리라면 Makefile을 따로 만드시는게 더 나을텐데요. 그리고, .o파일이 소스 디렉토리에 남아있으면 지저분하기 때문에 build 디렉토리를 따로 지정하시는 게 어떨까요?

chinstrap의 이미지

autoconf와 automake를 사용하시면 많이 편해지실수 있습니다.

또다른 구렁텅이로 빠질수도 있지만 ..

서지훈의 이미지

man make
-C 옵션을 참고하세요.

이렇게 서브에 Makefile을 따로 만들기 귀찮으시면...
그냥 컴파일 할때...
full-path를 주면은 바로 서브에 있는것도 컴파일 가능합니다.

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);