GNU Make는 실패한 명령을 무시하지 않습니다

GNU Make는 실패한 명령을 무시하지 않습니다

디렉토리가 존재하면 삭제해야 한다는 규칙을 작성했습니다.

.PHONY: distclean
distclean:
    -rmdir release

make distclean인쇄:

rmdir release
rmdir: failed to remove ‘release’: No such file or directory
test.mak:3: recipe for target 'distclean' failed
make: [distclean] Error 1 (ignored)

-이 플래그 로 인해 GNU Make가 이 오류를 무시해야 하지 않습니까 ?

저는 GNU Make 4.0을 사용하고 있습니다.

답변1

Make는 오류를 무시합니다.

make: [distclean] Error 1 (ignored)

여전히 오류 메시지가 인쇄되지만 distclean대상에 다른 규칙을 추가 하면 rmdir실패에도 불구하고 계속 처리되어야 합니다.

더 자세하게:

rmdir release

그러면 make곧 실행될 명령이 인쇄됩니다.

rmdir: failed to remove ‘release’: No such file or directory

존재하지 않기 rmdir때문에 오류 메시지가 인쇄됩니다 . 이를 제거하려면 명령에 release추가하거나 완전히 음소거 할 수 있습니다 .2> /dev/null>& /dev/nullrmdir

test.mak:3: recipe for target 'distclean' failed

rmdir0이 아닌 종료 코드로 종료되므로 make오류 메시지가 인쇄됩니다. 이를 제거하려면 || true명령에 추가해야 합니다 (모든 경우에 0 종료 코드로 종료되도록).

make: [distclean] Error 1 (ignored)

마지막으로 명령 앞에 가 붙어 있으므로 -오류는 무시되고 make계속됩니다.

관련 정보