2012-05-10 2 views
0

스태킹!Makefile : 종속성이없는 중간 파일 삭제

적극적인 실험과 검색은이 겉으로보기에는 쉬운 질문에 대한 해결책을 찾지 못했습니다.

제 빌드에서 .cc 파일은 .proto 파일에 의존합니다. make 프로세스 동안 .proto 파일은 .cc 및 .h 파일로 변환 된 다음 실행 파일로 수집되고 빌드됩니다.

.proto를 삭제할 때 해당 중간 중간 .cc 파일이 자동으로 삭제되는지 확인하려면 어떻게해야합니까? (그렇지 않은 경우 빌드의 다음 단계로 넘어 가서 이전에 문제가 발생했습니다.)

지금은 삭제할 때 생성 된 모든 .cc/.h 파일을 삭제합니다. 또는 .proto의 이름을 바꿉니다. 이것은 정확하지만 거의 전체 시스템의 재구성을 트리거합니다.

미리 감사드립니다 ...!

+0

생성 된 파일을 삭제하자마자 (즉, 실행 파일 작성을 마쳤 으면) 충분합니까? .proto 파일 중 하나가 실행 파일보다 새로운 경우가 아니면까지 /를 다시 생성하지 않았습니다. – Beta

+0

좋은 질문 - 불행히도, 대답은 "아닙니다." 종종 IDE (즉, XCode 또는 Visual Studio 2010)에서 프로그램을 실행합니다. 중간에 .cc 파일이 있어야합니다. make 단계는이를위한 사전 준비 작업입니다. –

+0

흥미로운 ... 어떤 버전의 메이크? – Beta

답변

1

당신은 clean 같은 규칙을 쓸 수 있지만 덜 엄격한 수 : 당신은 수동으로이 규칙을 실행할 수

SOURCES = $(PROTOS:.proto=.cc) 

.PHONY: tidy 
tidy: 
     @rm $(filter-out $(SOURCES), $(wildcard *.cc)) 

하거나 실행 파일의 순서 전용 전제합니다.

또는 실행 파일의 규칙에 동일한 명령을 넣을 수도 있지만 그럴 수 없습니다.

+0

오, 이것은 매우 행보할만한 것 같습니다. 사실, 제 메이크 파일은 실제로 (직접적으로) 실행 파일을 생성하지 않습니다 - 빌드의 해당 부분을 수행하기 위해 XCode 나 (결국) VisualStudio를 호출합니다. 그래서 그 룰을 그 자리에 두는 것은 실제로 매우 깔끔합니다. 빌드 단계로 이동하기 전에 ". 감사! –