我在makefile中遇到了一行。这条线是:
-include $(wildcard makefile.mk) /dev/null
我不理解include行中/ dev / null的用途。这是故意还是错误?也许他们打算在那里发送输出?我还是新手,我可以帮助我理解这个吗?
答案 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
不会做任何事情。