在makefile中,作为规则目标的单个破折号意味着什么?

在makefile中,作为规则目标的单个破折号意味着什么?,makefile,Makefile,我看到一个文件.missing syscalls.d,其中包含 -: /home/ckim/MVP/snake_linux_3.3.mvpe/include/linux/kconfig.h \ include/generated/autoconf.h \ /home/ckim/MVP/snake_linux_3.3.mvpe/arch/sparc/include/asm/types.h \ include/asm-generic/int-ll64.h \ /home/ckim/MVP/

我看到一个文件.missing syscalls.d,其中包含

-:  /home/ckim/MVP/snake_linux_3.3.mvpe/include/linux/kconfig.h \
 include/generated/autoconf.h \
 /home/ckim/MVP/snake_linux_3.3.mvpe/arch/sparc/include/asm/types.h \
 include/asm-generic/int-ll64.h \
 /home/ckim/MVP/snake_linux_3.3.mvpe/arch/sparc/include/asm/bitsperlong.h \
 include/asm-generic/bitsperlong.h \
 /home/ckim/MVP/snake_linux_3.3.mvpe/arch/sparc/include/asm/unistd.h

我知道.d文件只是为了显示依赖性。但是目标是什么?

makefiles中命令之前的连字符用于抑制错误并继续,而不是像这样失败:

clean:
        -rm -f *.o
-include $(SRC:%.c=%.d)
对于makefiles中的include语法,也可以采用相同的方法来抑制错误消息,否则,如果文件不可用,则会出现以下错误消息:

clean:
        -rm -f *.o
-include $(SRC:%.c=%.d)
我假设.missing syscalls.d文件的使用方式相同,忽略它试图包含的不存在的头文件。

或者这是一个错误(来自某个自动化进程出错),或者这是一个文本目标
-
,它定义了一些额外的prereq(对于我无法想象可能实际运行的目标)

或者这是试图确保这些文件不被视为中间文件,如果某些规则链会使这些文件被认为是中间文件的话。 请参阅以供参考

通常,如果在文档中提到某个文件,则该文件不能是中间文件 将makefile作为目标或先决条件。但是,您可以显式地标记 通过将文件列为特殊操作的先决条件,将其作为中间文件 目标,中级。即使提及该文件,此操作也会生效 明确地以另一种方式


是什么生成了那个文件?我知道命令前面的破折号是为了在命令处理过程中忽略错误。但是这个破折号在目标位置,不是命令。我不明白“没有明确目标的目标错误”是什么意思。一个不存在的目标如何依赖于其他头文件?。。