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


172

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

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

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

답변:


235

태그가 지정된 명령 줄의 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 의 사용을 언급한다 +.)


41

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

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.