为什么在makefile中包含/ dev / null?

时间:2014-07-01 20:51:07

标签: linux makefile include dev-null

我在makefile中遇到了一行。这条线是:

-include $(wildcard makefile.mk) /dev/null

我不理解include行中/ dev / null的用途。这是故意还是错误?也许他们打算在那里发送输出?我还是新手,我可以帮助我理解这个吗?

2 个答案:

答案 0 :(得分:2)

我认为它用于确保即使通配符扩展为空,include也会产生至少一个文件 - / dev / null。也许我可以这样解释......想象你有一个像这样的假设汇编

INCLUDES=$(wildcard /usr/inc*)
CC -I INCLUDES prog.c -o prog

如果您(通常很奇怪)的环境在/ usr / include中没有任何内容,您的编译命令将扩展为

CC -I prog.c -o prog

可能会出错。所以/dev/null添加可能会避免这种情况。

我不是说这是必要的,我只是说我认为这可能是它的目的。它与程序员使用

时类似
grep pattern file /dev/null

而不是更现代的

grep -H pattern file

因为它是一个肯定存在的文件,因此grep将接收两个文件作为参数,因此会告诉你它找到模式的文件的名称 - 就像你指定了{ {1}}。

另一个例子是Solaris上的-H命令。它为您提供了所有附加磁盘的可爱列表,但是然后在那里挂起直到您选择一个 - 如果您想从脚本解析列表,我们就不理想了。在这里,您可以使用/ dev / null,它将列出磁盘并在您执行

时退出
format

答案 1 :(得分:0)

这是完全不必要的;如果没有指定任何文件名,include不会做任何事情。