IT박스

Makefile에서 @ :( 기호 콜론)는 무엇을 의미합니까?

itboxs 2020. 6. 22. 08:08
반응형

Makefile에서 @ :( 기호 콜론)는 무엇을 의미합니까?


Makefile에서 다음은 무엇을합니까?

rule: $(deps)
    @:

make 매뉴얼에서 이것을 찾을 수없는 것 같습니다.


"출력에서이 명령을 에코하지 마십시오"를 의미합니다. 따라서이 규칙은 "쉘 명령을 실행 :하고 출력을 에코하지 않습니다 "라고 말합니다 .

물론 셸 명령 :은 작동하지 않기 때문에 "아무것도하지 말고 말하지 마십시오."라고 말하는 것입니다.

왜?

여기서 중요한 것은 두 가지 다른 구문을 모호하게 조합 한 것입니다. 메이크업 (1) 구문 명령을 에코하지 단순히 @로 시작 동작의 사용이다. 그래서 같은 규칙

always:
       @echo this always happens

방출하지 않습니다

   echo this always happens
   this always happens

이제 규칙의 작업 부분은을 포함한 모든 셸 명령이 될 수 있습니다 :. Bash 도움말은 이뿐 만 아니라 어디에서나 설명합니다.

$ help :
:: :
    Null command.

    No effect; the command does nothing.

    Exit Status:
    Always succeeds.

왜 이런 일을하는지 궁금해하는 사람들에게, 마치 무언가가 행한 것처럼 행하고 싶은 경우, Make가 대상에 대해 "Nothing to done"을 출력하지 않도록하는 것이 유용합니다.

예를 들어 항상 실행하는 가짜 대상이 있고 명령에 여러 조건이 있습니다. 그러한 조건이 잘못되어 아무 일도 일어나지 않을 경우를 대비하여 최소한 무언가를 갖고 싶을 것입니다.

예를 들어 (Linux의 스크립트 /Makefile.clean에서) :

__clean: $(subdir-ymn)
ifneq ($(strip $(__clean-files)),)
    +$(call cmd,clean)
endif
ifneq ($(strip $(__clean-dirs)),)
    +$(call cmd,cleandir)
endif
ifneq ($(strip $(clean-rule)),)
    +$(clean-rule)
endif
    @:

참고 URL : https://stackoverflow.com/questions/8610799/what-does-at-symbol-colon-mean-in-a-makefile

반응형