2011-06-15 4 views
2

저는 makefile을 처음 사용하고 Cygwin을 사용하여 파일을 만듭니다. 나는 3 개의 다른 디렉토리에있는 소스 파일을 갖고 있으며, VPATH 기술을 사용하여 파일을 컴파일했지만, 오브젝트 파일은 현재 디렉토리에 생성됩니다.Cygwin 및 makefiles

모든 오브젝트 파일을 하나의 디렉토리 에 생성하고 다른 대상 파일을 다른 디렉토리에 생성하려고합니다. [즉, 다른 디렉토리의 .mk 파일] 어떻게 할 수 있습니까? 컴파일러에게 지정된 디렉토리에 컴파일러를 생성하도록 컴파일러에 지시 할 수 있습니까? 여기

내 프로그램입니다 :

vpath %.c bad good ugly 
    gcc $(CFLAGS) -c $< -o [email protected] 
gola:goka.o foka.o hoka.o 
    gcc $^ -o [email protected] 
goka.o:goka.c 
    gcc -c $< 
foka.o:foka.c 
    gcc -c $< 
hoka.o:hoka.c 
    gcc -c $< 

어떻게 지정된 디렉토리에 하나의 디렉토리에있는 모든 오브젝트 파일과 gola [MK] 파일을 배치해야합니까?

답변

1

당신이 원하는 어디 말했다하지 않은 이러한 파일 (그리고 난 당신이 "MK 파일"에 대해 말에서 이해가되지 수), 그러나 이것은 bin/golaobj/의 오브젝트 파일을 넣어 구성합니다.

vpath %.c bad good ugly 
# gcc $(CFLAGS) -c $< -o [email protected] this line makes no sense      

OBJECTS = obj/goka.o obj/foka.o obj/hoka.o 

bin/gola: $(OBJECTS) 
    gcc $^ -o [email protected] 

$(OBJECTS): obj/%.o : %.c 
    gcc -c $< -o [email protected] 

은 더 유연 짧은 메이크 청소기를 만들 수있는 방법, 있습니다,하지만 그들은 고급 기술이다.