는 메이크 파일이 두 명령의 차이점은 무엇입니까 대 @echo? 언제 사용하나요?
2
A
답변
4
글쎄, echo
은 쉘 명령입니다. 당신이 조리법에 넣어한다면, 쉘은 그것을 실행하기 위해 호출되고 쉘 명령은 출력을 생성합니다
foo: ; @echo "Hello World"
실행 /bin/sh -c 'echo "Hello World"'
합니다. 레시피에서만 사용할 수 있습니다. make의 모든 버전과 모든 POSIX 쉘에서 작동합니다. 셸을 호출하기 때문에 문제를 인용하는 등의 작업을해야 할 수도 있습니다 (이 간단한 예에서는 아닙니다).
info
은 GNU make 기능입니다. 그것은 make에 의해 직접적으로 처리됩니다 : 셸은 호출되지 않습니다. 레시피뿐만 아니라 메이크 파일의 어느 곳에 나 나타날 수 있습니다. make의 다른 버전에는 이식 할 수 없습니다. 셸이 호출되지 않으므로 인용 문제가 없습니다.
그러나, info
은 make 함수이기 때문에 쉘이 호출되기 전에 make에 의해 구문 분석됩니다. 즉, 이는 레서피 내에서 설정된 쉘 변수를 표시 할 수 없다는 것을 의미합니다. 예 :
foo: @for i in a b c d; do $(info $$i); done
; 여기서 echo
을 사용해야합니다.