我在 makefile 中遇到了一行。该行是:
-include $(wildcard makefile.mk) /dev/null
我不明白包含行中/dev/null 的用途。是故意的还是失误?也许他们打算将输出发送到那里?我对 makefile 还很陌生,有人可以帮助我理解这一点吗?
最佳答案
我认为它是用来确保即使通配符扩展为空,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
将接收两个文件作为参数,因此会告诉您它在其中找到模式的文件的名称 - 就像您一样已指定-H
。
另一个示例是 Solaris 上的 format
命令。它为您提供了所有附加磁盘的可爱列表,但然后卡在那里直到您选择一个 - 如果您想从脚本解析列表,这并不理想。同样,您可以使用/dev/null,它会列出磁盘并退出(如果您这样做)
format < /dev/null
关于linux - 为什么要在 makefile 中包含/dev/null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24519067/