Makefile中不需要的空间

Makefile中不需要的空间,makefile,Makefile,这会奏效的 PREFIX=/home/tim/program_files/ # PREFIX=/opt/ PATH=$(PREFIX)mylib/ 这行不通 PREFIX=/home/tim/program_files/ # PREFIX=/opt/ PATH=$(PREFIX)mylib/ 因为$(前缀)和mylib/之间有一个不需要的空格 Makefile的相关语法规则是什么?谢谢。我不能指出这样的语法规则,但这一细节在本节的makefile中特别提到 还可以使用它们将受控的前导空格引入

这会奏效的

PREFIX=/home/tim/program_files/
# PREFIX=/opt/
PATH=$(PREFIX)mylib/
这行不通

PREFIX=/home/tim/program_files/ # PREFIX=/opt/
PATH=$(PREFIX)mylib/
因为
$(前缀)
mylib/
之间有一个不需要的空格


Makefile的相关语法规则是什么?谢谢。

我不能指出这样的语法规则,但这一细节在本节的makefile中特别提到

还可以使用它们将受控的前导空格引入变量值。在替换变量引用和函数调用之前,从输入中丢弃前导空格字符;这意味着您可以通过使用变量引用保护前导空格,从而在变量值中包含前导空格,如下所示:

空字符串:=

空格:=$(空字符串)#行尾

这里变量空间的值正好是一个空间。为了清楚起见,这里包含了注释“#行尾”。由于尾随空格字符不会从变量值中剥离,因此只有行末尾的空格具有相同的效果(但很难读取)。如果在变量值的末尾添加空格,最好在行的末尾添加这样的注释,以明确您的意图。相反,如果不希望在变量值的末尾添加任何空格字符,则必须记住不要在某些空格后的行尾添加随机注释,例如:

dir:=/foo/bar#用于放置青蛙的目录

<这里变量dir的值是'/foo/bar'(有四个尾随空格),这可能不是我们的初衷。(想象一下像“$(dir)/file”这样的定义!)