【问题标题】:Why include /dev/null in makefile?为什么在 makefile 中包含 /dev/null?
【发布时间】:2014-07-01 20:51:06
【问题描述】:

我在生成文件中遇到了一行。该行是:

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

我不明白包含行中 /dev/null 的用途。是故意的还是错误的?也许他们打算将输出发送到那里?我对makefile还是很陌生,有人可以帮我理解这个吗?

【问题讨论】:

  • 它可能用于保证至少指定一个文件,以防行的其余部分扩展为空。
  • @MarkSetchell 你能把它作为答案吗?也许也在扩展它。

标签: linux makefile include dev-null


【解决方案1】:

我认为它用于确保即使通配符完全没有扩展,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

【讨论】:

    【解决方案2】:

    这完全没有必要;如果没有指定任何文件名,include 不会执行任何操作。

    【讨论】:

    • 所以 /dev/null 添加应该涵盖没有结果的情况,这是好的和/或典型的编码标准吗?还是有更好的方法来解决这个问题?
    • 不,根本没有理由这样做。
    猜你喜欢
    • 1970-01-01
    • 2018-05-11
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    相关资源
    最近更新 更多