Makefile 使文件回显显示"$路径“;一串

Makefile 使文件回显显示"$路径“;一串,makefile,Makefile,我试图强制生成文件显示下一个字符串: "Please execute next commands: setenv PATH /usr/local/greenhills/mips5/linux86:$PATH" 问题在于“$PATH”。命令 @echo "setenv PATH /usr/local/greenhills/mips5/linux86:$PATH" 造成结果 "setenv PATH /usr/local/greenhills/mips5/linux86:ATH" 转义字符、引

我试图强制生成文件显示下一个字符串:

"Please execute next commands:
setenv PATH /usr/local/greenhills/mips5/linux86:$PATH"
问题在于
“$PATH”
。命令

@echo "setenv PATH /usr/local/greenhills/mips5/linux86:$PATH"
造成结果

"setenv PATH /usr/local/greenhills/mips5/linux86:ATH"
转义字符、引号、
“$(shell echo”
的任何组合均未获得所需的结果


有什么建议吗?

make使用
$
作为自己的变量。例如,单字符变量
$A
或长名称变量-
${VAR}
$(VAR)

要将
$
放入命令中,请使用
$
,例如:

all:
  @echo "Please execute next commands:"
  @echo 'setenv PATH /usr/local/greenhills/mips5/linux86:$$PATH'
还要注意的是,要想
make
“和
(双引号和单引号)不起任何作用,它们会逐字传递给shell。(删除
@
符号以查看
make
发送给shell的内容。)为了防止shell扩展
$PATH
,第二行使用了中的
'

,在描述
函数时,他们讨论了此特定示例:

value函数提供了一种使用 变量,但不进行扩展。请注意 撤消已经发生的扩展;例如,如果创建 简单展开的变量,其值在 定义;在这种情况下,value函数将返回相同的 结果是直接使用变量

value函数的语法为:

 $(value variable)
请注意,variable是一个变量的名称,而不是该变量的引用。因此,您通常不会使用 编写时使用“$”或括号。(但是,可以使用 如果不希望名称为 恒定。)

此函数的结果是一个字符串,其中包含 变量,不进行任何扩展。例如,在 生成文件:

 FOO = $PATH

 all:
         @echo $(FOO)
         @echo $(value FOO)
第一个输出行将是ATH,因为“$p”将作为make变量展开,而第二个输出行是 输出行将是$PATH环境的当前值 变量,因为值函数避免了展开


谢谢,你给了我指示!@echo“setenv PATH/usr/local/greenhills/mips5/linux86:$$PATH”案例到要打印的整个$PATH,但是@echo“setenv PATH/usr/local/greenhills/mips5/linux86:$$PATH”完成了这项工作!因为,正如我注意到的那样,
'
被传递到shell中。在
内部
shell将扩展
$PATH
,但不在
'
内部。感谢您提醒我,我已经很久没有使用makeTo了。老实说,我自己总是忘记这一点,一开始也会犯同样的错误;)感谢您指出变量声明是在目标之外完成的。它们可以在目标内部定义吗?