Makefile での式補間のエスケープ
Makefile を作成するとき、式を組み込んだコマンドを実行したいと思うのが一般的です。この一般的な例は、特定の基準に基づいてテストを選択的に実行するテストです。
Go プロジェクトに取り組んでいて、ベンダー ディレクトリからテストを除外したいとします。
$ go test $(go list ./... | grep -v /vendor/)
を使用してコマンドラインでこれを簡単に行うことができます。しかし、これを Makefile に組み込もうとすると、
test: go test $(go list ./... | grep -v /vendor/) .PHONY: test
式がそうでないことに気づくでしょう。 interpolated:
$ make go test ? github.com/m90/some-repo [no test files]
この問題を解決するには、2 番目の文字を使用して式内の「$」文字をエスケープする必要があります。 "$":
test: go test $$(go list ./... | grep -v /vendor/) .PHONY: test
"$" をエスケープすることで、変数を置換するのではなく、実行されるリテラル コマンドとして式を解釈するように Makefile に指示します。
以上がコマンドを正しく実行するには、メイクファイル内の式補間を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。