【问题标题】:Escaping in makefile在makefile中转义
【发布时间】:2011-01-23 21:01:44
【问题描述】:

我正在尝试在 makefile 中执行此操作,但它失败了:

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

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

【问题讨论】:

  • 它是如何失败的?它会产生什么错误信息?你希望它做什么?

标签: shell makefile escaping


【解决方案1】:

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

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

【讨论】:

  • 是的,制作完全是浪费钱:你必须放两个$才能得到一个。
  • @PavelShved 我从来没有付过钱。 :)
  • 对于在搜索过程中找到此答案的任何人,作为 cmets 开头的“#”字符也存在问题。对于这些,您应该使用反斜杠转义:“\#”。
【解决方案2】:

当你开始做的时候,Make 非常笨拙。这是一个做同样事情的非 awk 版本:

space := $() #

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

all:
    $(info $(M_ARCH))

【讨论】:

    猜你喜欢
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    相关资源
    最近更新 更多