如何删除makefile中的子字符串

时间:2018-12-08 15:32:04

标签: makefile

一行一行地在终端中工作,但在makefile中行不通?

test:
    FOO="MACOS" ; \
    FOO=$${FOO//OS/} ; \
    @echo $FOO

预期:

make test
MAC

1 个答案:

答案 0 :(得分:1)

必须对外壳变量FOO的最后一个外壳扩展进行转义($$)。而且,如果您想抑制食谱的回声,请将@放在食谱的开头,而不是食谱的中间。

test:
    @FOO="MACOS" ; \
    FOO=$${FOO//OS/} ; \
    echo $$FOO

请注意,您还可以使用make变量和函数:

FOO := MACOS
FOO := $(patsubst %OS,%,$(FOO))

test:
    @echo '$(FOO)'