web-dev-qa-db-ja.com

メイクファイルでのエスケープ

私はメイクファイルでこれをしようとしていますが、それは恐ろしく失敗します:

M_Arch := $(Shell g++ -dumpmachine | awk '{split($1,a,"-");print a[1]}')

なぜなのかご存知ですか?エスケープに関係していると思いますが、どこで何をしますか?

78
Jonas Byström

これはドル記号です。メイクファイルでは、単一のドル記号を取得するには$$と入力する必要があります。

M_Arch := $(Shell g++ -dumpmachine | awk '{split($$1,a,"-");print a[1]}')
150
Martin

あなたがそれに着くとき、メイクは非常にだらしないです。同じことを行う非awkバージョンは次のとおりです。

space := $() #

M_Arch := $(firstword $(subst -,$(space),$(Shell g++ -dumpmachine)))

all:
    $(info $(M_Arch))
16
richq