代码之家  ›  专栏  ›  技术社区  ›  Chris G.

如何删除makefile中的子字符串

  •  0
  • Chris G.  · 技术社区  · 6 年前

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

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

    预期:

    make test
    MAC
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Renaud Pacalet    6 年前

    shell变量的最后一个shell扩展 FOO 必须逃跑( $$ )如果你想抑制食谱的回声,把 @ 开始时,而不是在食谱中间。

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

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

    FOO := MACOS
    FOO := $(patsubst %OS,%,$(FOO))
    
    test:
        @echo '$(FOO)'