2013-03-03 4 views
15

에 대한 오브젝트 파일을 제거합니다메이크 다음은 메이크 코드입니다 아무 이유없이

CC=gcc 
CXX=g++ 
OBJS=OMXComponent.o Event.o hello_jpeg.o JPEG.o OMXCore.o Locker.o Logger.o 
BIN=hello_jpeg.bin 

# include ../Makefile.include 


CFLAGS+=-DSTANDALONE -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -DTARGET_POSIX -D_LINUX -fPIC -DPIC -D_REENTRANT -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -U_FORTIFY_SOURCE -Wall -g -DHAVE_LIBOPENMAX=2 -DOMX -DOMX_SKIP64BIT -ftree-vectorize -pipe -DUSE_EXTERNAL_OMX -DHAVE_LIBBCM_HOST -DUSE_EXTERNAL_LIBBCM_HOST -DUSE_VCHIQ_ARM -Wno-psabi 

LDFLAGS+=-L$(SDKSTAGE)/opt/vc/lib/ -lGLESv2 -lEGL -lopenmaxil -lbcm_host -lvcos -lvchiq_arm -lpthread -lrt -L../libs/ilclient -L../libs/vgfont 

INCLUDES+=-I$(SDKSTAGE)/opt/vc/include/ -I$(SDKSTAGE)/opt/vc/include/interface/vcos/pthreads -I$(SDKSTAGE)/opt/vc/include/interface/vmcs_host/linux -I./ -I../libs/ilclient -I../libs/vgfont 

all: $(BIN) $(LIB) 

%.o: %.c 
    @rm -f [email protected] 
    $(CC) $(CFLAGS) $(INCLUDES) -g -c $< -o [email protected] -Wno-deprecated-declarations 

%.o: %.cpp 
    @rm -f [email protected] 
    $(CXX) $(CFLAGS) $(INCLUDES) -g -c $< -o [email protected] -Wno-deprecated-declarations 

%.bin: $(OBJS) 
    $(CC) -o [email protected] -Wl,--whole-archive $(OBJS) $(LDFLAGS) -Wl,--no-whole-archive -rdynamic 

내 Makefile을 부르고 때, 갑자기, 모든 오브젝트 파일을 삭제하기 시작하는 이유는 확실하지 않다! 그것은 이전에 삭제되지 않은, 그러나 최근에 Makefile을 실행 한 후,이 내가 콘솔 창에 무엇을 얻을 입니다 : 내 오브젝트 파일을 제거하는 이유

rm OMXCore.o JPEG.o OMXComponent.o Logger.o hello_jpeg.o Locker.o Event.o 

어떤 생각? Make가 그것을 삭제하는 것을 멈추는 방법은 무엇입니까? 어제 더 이상 이상하지 않은 점은 어제 삭제하지 않았다는 것입니다. 오늘 업그레이드를 시작하거나 변경하지 않고서는 모두 오늘부터 시작되었습니다 !!! 이제 src 파일 중 하나에서 약간의 변경을 수행하면 다른 모든 오브젝트 파일이 다시 빌드 될 때까지 오랜 시간을 기다려야합니다. 필요하지 않으며 느려집니다. 그것은 다른 메이크

메이크업 -f/my_full_path/메이크

을 따기 경우 내가 올바른 디렉토리에 나는 것을 확인하고

는 가 난 경우, 전체 경로를 "확인"했다

하는 메이크 파일이 실행되는 동안, 아래, 나는 다른 터미널에 "LS"를하고 있었는데, 나는 내가 제대로 오브젝트 파일을 축적하고 것으로 나타났습니다 :

-rw-rw-r-- 1 pi pi 1170 Mar 3 19:28 Makefile 
-rw-r--r-- 1 pi pi 482052 Mar 3 19:30 OMXComponent.o 
-rw-r--r-- 1 pi pi 19984 Mar 3 19:30 Event.o 
-rw-r--r-- 1 pi pi 14688 Mar 3 19:30 hello_jpeg.o 
-rw-r--r-- 1 pi pi 162260 Mar 3 19:31 JPEG.o 
-rw-r--r-- 1 pi pi 215492 Mar 3 19:31 OMXCore.o 
-rw-r--r-- 1 pi pi 76384 Mar 3 19:31 Locker.o 
-rw-r--r-- 1 pi pi  0 Mar 3 19:31 Logger.o 

그러나 갑자기, 모든 것이 구축 한 후, 모든 오브젝트 파일 ge 제거하지 마라 !!! make는 "중간"을 고려하기 때문에

[email protected] /opt/vc/src/hello_pi/hello_jpeg_v2 $ make -f /opt/vc/src/hello_pi/hello_jpeg_v2/Makefile 
g++ -g -DSTANDALONE -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -DTARGET_POSIX -D_LINUX -fPIC -DPIC -D_REENTRANT -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -U_FORTIFY_SOURCE -Wall -g -DHAVE_LIBOPENMAX=2 -DOMX -DOMX_SKIP64BIT -ftree-vectorize -pipe -DUSE_EXTERNAL_OMX -DHAVE_LIBBCM_HOST -DUSE_EXTERNAL_LIBBCM_HOST -DUSE_VCHIQ_ARM -Wno-psabi -I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -I./ -I../libs/ilclient -I../libs/vgfont -g -c OMXComponent.cpp -o OMXComponent.o -Wno-deprecated-declarations 
g++ -g -DSTANDALONE -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -DTARGET_POSIX -D_LINUX -fPIC -DPIC -D_REENTRANT -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -U_FORTIFY_SOURCE -Wall -g -DHAVE_LIBOPENMAX=2 -DOMX -DOMX_SKIP64BIT -ftree-vectorize -pipe -DUSE_EXTERNAL_OMX -DHAVE_LIBBCM_HOST -DUSE_EXTERNAL_LIBBCM_HOST -DUSE_VCHIQ_ARM -Wno-psabi -I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -I./ -I../libs/ilclient -I../libs/vgfont -g -c Event.cpp -o Event.o -Wno-deprecated-declarations 
g++ -g -DSTANDALONE -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -DTARGET_POSIX -D_LINUX -fPIC -DPIC -D_REENTRANT -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -U_FORTIFY_SOURCE -Wall -g -DHAVE_LIBOPENMAX=2 -DOMX -DOMX_SKIP64BIT -ftree-vectorize -pipe -DUSE_EXTERNAL_OMX -DHAVE_LIBBCM_HOST -DUSE_EXTERNAL_LIBBCM_HOST -DUSE_VCHIQ_ARM -Wno-psabi -I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -I./ -I../libs/ilclient -I../libs/vgfont -g -c hello_jpeg.cpp -o hello_jpeg.o -Wno-deprecated-declarations 
g++ -g -DSTANDALONE -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -DTARGET_POSIX -D_LINUX -fPIC -DPIC -D_REENTRANT -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -U_FORTIFY_SOURCE -Wall -g -DHAVE_LIBOPENMAX=2 -DOMX -DOMX_SKIP64BIT -ftree-vectorize -pipe -DUSE_EXTERNAL_OMX -DHAVE_LIBBCM_HOST -DUSE_EXTERNAL_LIBBCM_HOST -DUSE_VCHIQ_ARM -Wno-psabi -I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -I./ -I../libs/ilclient -I../libs/vgfont -g -c JPEG.cpp -o JPEG.o -Wno-deprecated-declarations 
g++ -g -DSTANDALONE -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -DTARGET_POSIX -D_LINUX -fPIC -DPIC -D_REENTRANT -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -U_FORTIFY_SOURCE -Wall -g -DHAVE_LIBOPENMAX=2 -DOMX -DOMX_SKIP64BIT -ftree-vectorize -pipe -DUSE_EXTERNAL_OMX -DHAVE_LIBBCM_HOST -DUSE_EXTERNAL_LIBBCM_HOST -DUSE_VCHIQ_ARM -Wno-psabi -I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -I./ -I../libs/ilclient -I../libs/vgfont -g -c OMXCore.cpp -o OMXCore.o -Wno-deprecated-declarations 
g++ -g -DSTANDALONE -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -DTARGET_POSIX -D_LINUX -fPIC -DPIC -D_REENTRANT -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -U_FORTIFY_SOURCE -Wall -g -DHAVE_LIBOPENMAX=2 -DOMX -DOMX_SKIP64BIT -ftree-vectorize -pipe -DUSE_EXTERNAL_OMX -DHAVE_LIBBCM_HOST -DUSE_EXTERNAL_LIBBCM_HOST -DUSE_VCHIQ_ARM -Wno-psabi -I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -I./ -I../libs/ilclient -I../libs/vgfont -g -c Locker.cpp -o Locker.o -Wno-deprecated-declarations 
g++ -g -DSTANDALONE -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -DTARGET_POSIX -D_LINUX -fPIC -DPIC -D_REENTRANT -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -U_FORTIFY_SOURCE -Wall -g -DHAVE_LIBOPENMAX=2 -DOMX -DOMX_SKIP64BIT -ftree-vectorize -pipe -DUSE_EXTERNAL_OMX -DHAVE_LIBBCM_HOST -DUSE_EXTERNAL_LIBBCM_HOST -DUSE_VCHIQ_ARM -Wno-psabi -I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -I./ -I../libs/ilclient -I../libs/vgfont -g -c Logger.cpp -o Logger.o -Wno-deprecated-declarations 
g++ -g -o hello_jpeg.bin -Wl,--whole-archive OMXComponent.o Event.o hello_jpeg.o JPEG.o OMXCore.o Locker.o Logger.o -L/opt/vc/lib/ -lGLESv2 -lEGL -lopenmaxil -lbcm_host -lvcos -lvchiq_arm -lpthread -lrt -L../libs/ilclient -L../libs/vgfont -Wl,--no-whole-archive -rdynamic 
rm OMXCore.o JPEG.o OMXComponent.o Logger.o hello_jpeg.o Locker.o Event.o 
+1

하지만 "rm"을하지는 않습니다! 파일을 제거하지 않으려면 어떻게해야합니까? – user2112840

+0

'.c' 또는'.cpp' 파일 하나가 변경되지 않은 경우에도 make가 실행될 때마다'.o' 파일을 삭제합니까? – Tuxdude

+0

실행중인 ** 정확한 ** Makefile입니까? 깨끗한 상태에서 시작하여 Make를 실행할 때 얻을 수있는 ** complete ** 콘솔 출력을 추가 할 수 있습니까? –

답변

30

파일이 제거되고 :

는 그리고, 여기에 메이크 명령의 출력입니다. make이 전제 조건을 생성하는 규칙 체인을 형성하면 중급 체인에 의해 작성된 모든 파일을 "중간"으로 처리하고 대상 작성시 제거합니다. GNU make 설명서의 Chained Rules을 참조하십시오. 귀하의 경우에는

, 당신은 두 가지 방법으로이 문제를 방지 할 수 있습니다 : 그것은 모든.bin 파일 오브젝트 파일의 고정 목록에 달려 있다고하기 때문에, 어쨌든 잘못된 것 같습니다 %.bin 규칙, 제거,에 의해 교체

$(BIN): $(OBJS) 
     # as before 

또는 "차"로 오브젝트 파일을 표시 :

.SECONDARY: $(OBJS) 
+0

네, 당신은 절대적으로 옳습니다. 분명히 이것이 유일한 문제는 아니지만 ('g ++'과 'gcc'에 관한 OP에 대한 내 의견을 참조하십시오). –

13

그냥 추가 :

.PRECIOUS: %.o 

중간 파일도 귀중한 것입니다.