메이크파일의 줄 끝에 주석을 추가하고 싶습니다.
rule:
echo 1 # Print 1
그러나 이 makefile이 실행되면 명령줄에도 주석이 인쇄됩니다.
$ make rule
echo 1 # Print 1
1
하지만 명령이 아닌 주석을 숨기고 싶습니다. 인쇄되지 않는 makefile의 줄 끝에 주석을 추가하는 방법이 있습니까? (주석 앞에 를 추가하여 주석을 숨길 수 있다는 것을 알고 있지만 @
, 이는 전체 줄이 주석이고 줄 끝이 아닌 경우에만 작동합니다.)
답변1
이것은 # print 1
주석이 아닙니다 make
. 전체 echo 1 # print 1
줄(선행 TAB 제외)이 쉘로 전달됩니다( $(SHELL)
및 를 사용하여 실행됨 -c
).that-line
추가 인수로), 쉘은 이를 해당 컨텍스트에서 주석으로 해석합니다. a echo "foo # bar"
또는 with $(SHELL)
s 와 같이 주석 리더로 간주되지 않는 다른 상황에서는 #
그렇지 않습니다. 어떤 경우에도 사용되거나 @
비활성화 되지 않는 .SILENT
한 make
쉘에 전달된 코드가 인쇄됩니다.
ㅏ만들다Makefile 레시피의 주석은 #
해당 줄의 첫 번째 문자여야 합니다.
rule:
# print 1:
echo 1
또는 백슬래시를 사용하여 주석 줄을 계속할 수 있습니다.
rule:
#\
# print 1:
echo 1
다음을 수행할 수 있습니다.
rule:
@# print 1:
echo 1
이는 이 레시피의 각 줄에 대해 쉘을 호출합니다. 첫 번째 줄은 단 하나의 인라인 쉘 스크립트입니다.껍데기댓글, @
건너뛰기에코셸에 전달된 코드의 일부 make
가 아닌 셸 코드의 일부입니다.
바라보다info make 'comments, in recipe'
GNU 시스템에 대한 make
추가 정보 ( 에 대한 GNU 구현)
레시피의 댓글은 댓글이 아닙니다. 그대로 쉘에 전달됩니다. 쉘이 이것을 주석으로 처리하는지 여부는 쉘에 따라 다릅니다.
더 일반적으로info make comments
Makefile의 주석에 대해.
이제 할 수 있는 일은 make
규칙을 사용하여 echo를 완전히 비활성화 .SILENT
하고 쉘이 xtrace
해당 옵션을 사용하여 echo 자체를 수행하도록 하는 것입니다.
SHELL = sh -o xtrace
export PS4 =
.SILENT: rule
rule:
echo 1 # print 1