[linux] makefile에서 명령 호출의 에코를 억제 하시겠습니까?

출력을 stdout에 인쇄 해야하는 과제에 대한 프로그램을 작성했습니다. 할당 스펙은 호출 될 때 make run > outputFile프로그램을 실행하고 스펙에 지정된 것과 동일한 SHA1 지문을 갖는 파일에 출력을 기록 하는 Makefile 작성을 요구합니다 .

내 문제는 내 makefile입니다.

...
run:
     java myprogram

또한 내 프로그램 (예 : java myprogram)을 실행하는 명령을 출력 파일에 인쇄하여 내 파일 에이 추가 줄이 포함되어 지문이 잘못되었습니다.

명령 호출에 명령 호출을 반영하지 않고 명령을 실행할 수있는 방법이 있습니까?



답변

@gmake에게 실행중인 명령을 인쇄하지 않도록 지시하려면 명령의 시작 부분에 추가하십시오 . 이처럼 :

run:
     @java myprogram

Oli가 제안했듯이 이것은 Bash가 아닌 Make의 기능입니다.

반면에 Bash는 명시 적으로 명령하지 않는 한 (예 : -x옵션을 사용하여) 명령을 실행하지 않습니다 .


답변

더 간단하고 사용 make -s(자동 모드)!


답변

당신은 또한 사용할 수 있습니다 .SILENT

.SILENT: run
hi:
     echo "Hola!"
run:
     java myprogram

이 경우 make hi명령이 출력되지만 make run출력되지는 않습니다.


답변

명령의 앞에 오는 효과 @는 줄에 후행 백 슬래시를 사용하여 명령을 확장하여 섹션으로 확장 할 수 있습니다. .PHONY출력을 억제하기 위한 명령이 필요한 경우 다음 과 같이 섹션을 시작할 수 있습니다.

@printf "..."


답변