这将有效
PREFIX=/home/tim/program_files/
# PREFIX=/opt/
PATH=$(PREFIX)mylib/
这不起作用
PREFIX=/home/tim/program_files/ # PREFIX=/opt/
PATH=$(PREFIX)mylib/
因为$(PREFIX)
和mylib/
之间存在不需要的空格。
Makefile的相关语法规则是什么?感谢。
答案 0 :(得分:1)
我不能指向这样的语法规则,但是这个细节在`The Two Flavors of Variables部分的makefile中被特别调出。
您还可以使用它们将受控的前导空格引入变量值。在替换变量引用和函数调用之前,将从输入中丢弃前导空白字符;这意味着您可以通过使用变量引用保护变量值来包含变量值中的前导空格,如下所示:
nullstring:=
space:= $(nullstring)#end of the line
这里变量空间的值恰好是一个空格。为了清楚起见,此处包含注释'#end of the line'。由于尾随空格字符不会从变量值中删除,因此行末尾的空格将具有相同的效果(但难以阅读)。如果将空格放在变量值的末尾,最好在行尾添加类似的注释以使您的意图清晰。相反,如果你不想在变量值的末尾加上任何空格字符,你必须记住不要在一些空格之后在行尾添加随机注释,例如:
dir:= / foo / bar#目录将frobs放入
<这里变量dir的值是'/ foo / bar'(有四个尾随空格),这可能不是意图。 (想象一下这个定义的'$(dir)/ file'之类的东西!)