최근 메이크 기반 빌드 프로세스의 종속성에 대해 .d 파일을 처리하는 방법에 대한 논의가 있습니다. 빌드가 중단 될 때 .d 파일이 손상 될 수있는 문제가 제기되었습니다.오류 발생시 추가 파일을 삭제하는 방법 얻기
우리는 .DELETE_ON_ERROR 타겟을 사용하여 빌드가 중단되거나 실패 할 경우 생성 과정에 있던 오브젝트 파일이 삭제되도록합니다. 그러나 우리는 또한 GCC를 사용하여 컴파일시에 .d 파일을 생성하는데,이 파일 또한 삭제해야합니다. 이 사실을 알리는 간단한 방법이없는 것처럼 보입니다.
그래서 문제가 발생하면 우리의 객체와 의존성 파일을 모두 삭제할 수있는 방법이 있습니까? .d 및 .o 파일이 동시에 생성되고 오류가 있으면 삭제해야한다는 것을 알 수 있도록 규칙을 설정할 수있는 방법이 있습니까?
번갈아 손상된 .d 파일의 문제를 해결하기 위해 할 수있는 다른 방법이 있습니까? 이 줄을 따르는 한 가지 제안은 .d 파일을 임시 이름으로 생성하고 올바른 이름으로 파일을 복사하는 파일마다 별도의 사후 컴파일 단계를 수행하는 것입니다.
makefile 맨 위에있는'.DELETE_ON_ERROR :'는 모든 임시 파일을 없애 버립니다. 감사! –
패턴 규칙 "% .o : % .c"에 대한 레서피에서 두 번째 줄로 mv를 넣는 것이 좋습니다.나는 쉘에서 '&&'를 사용하여 행동을 바꾸거나 이익을 얻지 못한다. –
@RichardPerrin gmake가'-i' (오류 무시) 옵션과 함께 호출되면 제안서가 잘못된 동작을 일으킬 수 있습니다. 이 경우, 당신의 버전은'gcc'에 에러가 있는지 없는지에 관계없이'mv' 명령을 실행합니다. –