Makefileのdefineディレクティブ内の1つまたは複数の行をコメントしたいので、ディレクティブが展開されたときにその行が無視されるようにします。目標は、Makefileのユーザーにとって、コメント行をヒントとして配置し、defineディレクティブに含めることのできる例を示すことです。ディレクティブはターゲットに展開されます。言い換えればMakefile defineディレクティブ内の行をコメントする方法は?
、私はMakefileの
define ECHO_FOO =
# @echo foo
endef
all:
@echo Before call
$(ECHO_FOO)
@echo After call
.PHONY: all
はこの1つ以上同じ動作を持っていることを望む:
define ECHO_FOO =
endef
all:
@echo Before call
$(ECHO_FOO)
@echo After call
.PHONY: all
問題は、最初のMakefileは私に次のエラーを与えることである。
process_begin:のCreateProcess(NULL、#@エコーfooという、...)が失敗しました。 make(e = 2):指定されたファイルが見つかりません。 のMakefile:6: 'すべて' の目標のためのレシピは メイクを失敗しました:*** [すべて]エラー2
GNU make:Makefile contentsページ状態:定義ディレクティブ内
が、コメントは無視されていません変数の定義中に、変数の値にそのまま残っていました。変数が展開されると、変数が評価されるコンテキストに応じて、コメントを作成するかレシピテキストとして扱われます。
しかし、この特定のケースでは、#
シンボルがメイクコメントまたはレシピテキスト(これは私が会う問題のようです)として扱われています。
#
シンボルをdefine関数のコメントマークとして扱う方法を教えてもらえますか?私はMinGWのは上の3.82を作る実行している
#@echo foo
#@echo foo
##@echo foo
##@echo foo
\#@echo foo
\#@echo foo
/#@echo foo
/#@echo foo
:
は、私はすでに私に正しい出力を与えた#
記号をエスケープするか、インデントが、それらのどれを変更する考えに以下の行をすべて試してみましたWindowsを使用していますが、すでにmake v3.82.90と4.1の他の実装を試しています。 Windowsでは
ありがとう、それはうまく動作し、私はそれが両方のシステムで動作することを知ってうれしいです。実際、コマンドはシンプルですが、最終的なユーザーによって拡張される可能性があります。私は最終的なユーザーが自分のメイクファイルの知識を持っていてはいけないので、何か簡単なものを探していました。少なくともそれは私の目標だった。 – Tim
回答が更新されました。 – MadScientist
これは本当に複雑ではありません。ビルド後のすべてのスクリプト呼び出しを含むディレクティブです。つまり、0(コメント付きのデフォルト)から多くのものまでです。 defineディレクティブは最良の解決策であるように見えましたが、おそらくそれは貧しい選択でした。 – Tim