在makefile中转义

问题描述 投票:76回答:2

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

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

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

makefile g++ escaping gnu-make
2个回答
149
投票

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

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

16
投票

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

space := $() #

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

all:
    $(info $(M_ARCH))
© www.soinside.com 2019 - 2024. All rights reserved.