[makefile] @에서-, +와 +는 Make에서 레시피 라인의 접두사로 무엇을합니까?

GNU Makefile 매뉴얼 에는 이러한 접두사가 언급되어 있습니다.

.ONESHELL이 제공되면 레시피의 첫 번째 행에서만 특수 접두사 문자 ( ‘@’, ‘-‘및 ‘+’)를 검사합니다.

이 접두사는 무엇을하며 어디에 언급되어 있습니까?



답변

태그가 지정된 명령 줄의 make 동작을 제어합니다.

  • @ 실행되는 명령의 정상적인 ‘에코’를 억제합니다.

  • - 즉, 실행 된 명령의 종료 상태를 무시합니다 (일반적으로 0이 아닌 종료 상태는 빌드의 해당 부분을 중지 함).

  • +make -n명령이 정상적으로 실행되지 않을 때 ‘(또는’make -t ‘또는’make -q ‘) 에서 ‘ 이 명령을 실행 ‘을 의미 합니다. GNU Make 매뉴얼 의 POSIX 사양 make§9.3 도 참조하십시오 .

+표기법은 사실상 (비 표준화) 메커니즘 의 (POSIX 표준화) 일반화로를 포함 ${MAKE}하거나 에서 명령 행을 $(MAKE)실행 make -n합니다.

( @에서 설명 §5.2 하며 GNU의 설명서를 확인 -에 설명되어 §5.5 하고, §5.7.1 의 사용을 언급한다 +.)


답변

@명령 행이 콘솔로 에코되는 것을 방지합니다. 당신이 세계적으로 그것을 할 수 있습니다 -s또는--keep-silent

-어떤 이유로 명령이 실패하더라도 make가 계속 진행되도록 지시합니다. -i플래그 (또는 --ignore-errors) 를 통해 전체적으로 수행 할 수 있습니다 .

+당신이 요청하기 전에 나는 가족이 아니 었습니다. 내가 말할 수있는 근처, 그것은의 효과를 부정 -n, -t그리고 -q기본적으로 실제로 명령을 실행하지 수 있도록 말해 모두. 그래서 라인+ 앞에가 어쨌든 실행됩니다.

공식 Gnu Make 매뉴얼을 읽으면, 모두 5 장에 언급되어 있습니다. “명령”에 관한 장이었던이 매뉴얼의 이전 사본에서 du jour라는 용어는 이제 “레시피”인 것으로 보입니다.


답변