メイクファイルの行の末尾にコメントを追加したいです。
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
追加引数として、シェルはそれをそのコンテキストでコメントとして解釈します。 aecho "foo # bar"
や with $(SHELL)
s など、コメントリーダーと見なされない他の状況では#
そうではありません。いずれにせよ、使用または@
無効にしない限り、.SILENT
シェルmake
に渡されたコードが印刷されます。
ㅏ作るMakefileレシピのコメントは、その行の#
最初の文字でなければなりません。
rule:
# print 1:
echo 1
あるいは、バックスラッシュを使用してコメント行を続行することもできます。
rule:
#\
# print 1:
echo 1
次のことができます。
rule:
@# print 1:
echo 1
これはこのレシピの各行に対してシェルを呼び出します。最初の行は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