在makefile中转义

Jon*_*röm 81 makefile g++ escaping gnu-make

我正在尝试在makefile中执行此操作,但它失败的可能性非常大:

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

你知道为什么吗?我想它与逃避有关,但是在哪里和哪里?

Mar*_*tin 154

这是美元符号,在makefile中你必须输入$$以获得一个美元符号:

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

  • 是的,制造是完全浪费金钱:你必须把两个`$`来得到一个. (131认同)
  • @PavelShved我从来没有为make付过钱.:) (8认同)

ric*_*chq 16

当你深入了解时,制作是非常好的.这是一个非awk版本,它做同样的事情:

space := $() #

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

all:
    $(info $(M_ARCH))
Run Code Online (Sandbox Code Playgroud)