2010-01-28 3 views
0

내 메이크 파일의 관련 비트를 게시했습니다. 이 메이크 파일에 make all을 실행하면 debugosd.o을 컴파일 할 때 컴파일 오류가 발생합니다. 그러나 make는 이전에 빌드 된 debugosd.o을 찾았으므로 계속해서 dialup.otz을 빌드합니다.하나의 종속성을 컴파일하는 데 실패하면 make를 강제로 종료 할 수 있습니까?

모든 .o 파일을 삭제하지 않고 debugosd.o을 최신 버전이 되려면 어떻게해야합니까? debugosd.o에 컴파일 오류가 발생하는 즉시 make을 강제 종료 하시겠습니까?

%.o: %.c 
    $(TITLE) 
    $(CC) $(COMPILE) $(C_OPTIONS) -c $< 

그리고 메이크 조각은 다음과 같습니다 :

파일을 .o를 구축 할 수있는 규칙은

all: shared0.flw shared1.flw shared2.flw shared3.flw 

debugosd.o: debugosd.c debugosd.h 
xdialler_interface_new.o: xdialler_interface.h 
dialup.ooo: xdialler_interface_new.o debugosd.o xDialler.a 
    $(TITLE) 
    $(MAKE_OOO) 

dialup.otz: dialup.ooo 
    $(BIN)opress $< 

shared1.dir: dialup.otz 
    $(TITLE) 
    $(BIN)dirbuild $(SHAREDDIR1_OPTIONS) 

shared1.flw: shared1.dir 
    $(TITLE) 
    $(BIN)flwbuild $(SHAREDFLW_OPTIONS1) 

는 사실, 문제가 무엇인지 알아 냈어. 나는 가짜 표적을 사용하여 shared1.flw의 재건축을 강요하고 있었다. 나는 이것이 오류에 관계없이 계속해서 make을 계속한다고 생각한다.

+0

이상하게 들었습니다. 이미 이상하게 생각했습니다. – Pace

+0

예, 나도 make - shared2.flw 및 shared3.flw 빌드를 계속합니다. – BeeBand

답변

1

debugosd.o에 대해 나열된 특정 하위 명령이 없으므로 기본값을 사용하고 있다고 가정합니다 (예 : .c.o).

-으로 시작하지 않는 한 하위 명령이 0이 아닌 종료 코드 인 을 반환하면 종료해야합니다. dubugosd.o 대상에 사용중인 실제 명령을 확인하십시오.

이전에 빌드 된 파일이 중요한지 여부에 관계없이 make은 오류 조건 이후에 수행하지 않아야합니다.

관련 문제