在makefile中转义

我试图在一个makefile中做到这一点,它可怕地失败:

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

你知道为什么吗? 我猜这跟逃跑有关,但是在什么地方呢?

这是美元符号,在生成文件中,您必须input$$来获得一个美元符号:

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

当你认真对待的时候,Make是相当不礼貌的。 这是一个非awk的版本,可以做同样的事情:

 space := $() # M_ARCH := $(firstword $(subst -,$(space),$(shell g++ -dumpmachine))) all: $(info $(M_ARCH))