What does @: (at symbol colon) mean in a Makefile?

前端 未结 2 2034
你的背包
你的背包 2020-12-02 07:14

What does the following do in a Makefile?

rule: $(deps)
    @:

I can\'t seem to find this in the make manual.

2条回答
  •  既然无缘
    2020-12-02 08:04

    It means "don't echo this command on the output." So this rule is saying "execute the shell command : and don't echo the output.

    Of course the shell command : is a no-op, so this is saying "do nothing, and don't tell."

    Why?

    The trick here is that you've got an obscure combination of two different syntaxes. The make(1) syntax is the use of an action starting with @, which is simply not to echo the command. So a rule like

    always:
           @echo this always happens
    

    won't emit

       echo this always happens
       this always happens
    

    Now, the action part of a rule can be any shell command, including :. Bash help explains this as well as anywhere:

    $ help :
    :: :
        Null command.
    
        No effect; the command does nothing.
    
        Exit Status:
        Always succeeds.
    

提交回复
热议问题