我正在尝试强制make file显示下一个字符串:
"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 "的任何组合都未获得所需的结果...
有什么建议吗?
发布于 2012-08-24 22:38:04
在manual for GNU make中,他们在描述value函数时谈到了这个特定的示例:
value函数为您提供了一种在不扩展变量的情况下使用变量值的方法。请注意,这不会撤消已经发生的扩展;例如,如果您创建了一个简单的扩展变量,它的值将在定义期间扩展;在这种情况下,value函数将返回与直接使用该变量相同的结果。
value函数的语法为:
$(值变量)
请注意,variable是变量的名称,而不是对该变量的引用。因此,您通常不会在编写它时使用‘$’或括号。(但是,如果希望名称不是常量,则可以在名称中使用变量引用。)
此函数的结果是一个包含变量值的字符串,没有任何扩展。例如,在此makefile中:
FOO = $PATH all:@echo $(FOO) @echo $(值FOO)
第一个输出行将是ATH,因为“$P”将作为make变量展开,而第二个输出行将是$PATH环境变量的当前值,因为value函数避免了展开。
发布于 2010-09-14 17:37:18
make将$用于其自己的variable expansions。例如,单字符变量$A或具有长名称的变量- ${VAR}和$(VAR)。
要将$放入命令中,请使用$$,例如:
all:
@echo "Please execute next commands:"
@echo 'setenv PATH /usr/local/greenhills/mips5/linux86:$$PATH'还要注意,对于make,""和'' (双引号和单引号)不起任何作用,它们被逐字传递给shell。(去掉@符号,查看make发送到外壳的内容。)为了防止外壳程序扩展$PATH,第二行使用''。
https://stackoverflow.com/questions/3707517
复制相似问题