简单的GNU使反斜杠和变量赋值

时间:2015-10-11 14:14:42

标签: variables makefile backslash

在许多Makefile中,我看到了以下变量赋值结构:

TARGETDIR=somedirectory

OBJS = \
"tab" $(TARGETDIR)/main.o

我相信这意味着将目标文件放在" somedirectory"并称之为main.o。

我对上面使用的反斜杠的理解是它将一条长行延伸到下面的行。上面的内容不长,为什么反斜杠用于使这个多行语句?以上结果与:

相同
OBJS = $(TARGETDIR)/main.o

谢谢 汤姆

1 个答案:

答案 0 :(得分:0)

是的,结果是一样的。 make使用空格作为列表变量中项目之间的分隔符,\ newline计为零字符,因此它不会干扰任何内容。话虽如此,制表符确实在makefile的其他地方保留了含义,所以我会避免在那里放置一个标签。

在此之后,你的问题归结为'程序员没有来执行此操作,那么为什么 呢?'答案当然是'因为他们可以'。

如果你想要一个可能的原因,想象一下程序员可能会在以后添加额外的行(目标),并且风格上喜欢第一行没有与其他行不同的缩进。所以,他们从一开始就把它放在自己的路上。因此,以后可以节省几秒钟的重组!

事实上,我已经知道使用\ newline-and-space分隔的源文件列表。再次,它只是一种风格选择。使用您喜欢的任何方式!