1. ホーム
  2. makefile

[解決済み] ってなんですか?(アットマークコロン)はMakefileの中でどういう意味ですか?

2022-04-20 08:19:50

質問

Makefileの中で、次のようなことが行われています。

rule: $(deps)
    @:

makeのマニュアルには載っていないようです。

解決方法は?

つまり、このルールは、「このコマンドを出力にエコーしてはいけない」という意味です。 : そして、出力をエコーしないでください。

もちろん、シェルコマンドの : は no-op なので、これは "何もしない、そして何も言わない、と言っていることになります。

なぜ?

ここでのトリックは、2つの異なる構文の不明瞭な組み合わせになっていることです。 その メイク(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.