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了。老实说,我自己总是忘记这一点,一开始也会犯同样的错误;)感谢您指出变量声明是在目标之外完成的。它们可以在目标内部定义吗?