C 阻止make删除从.def文件生成的源文件

C 阻止make删除从.def文件生成的源文件,c,linux,bash,makefile,C,Linux,Bash,Makefile,我不知道.def文件是如何使用的,它们是什么,但我希望在创建相应的目标文件后,不要删除与.def文件同名的源文件。有什么办法吗 更具体地说,我正在处理并看到许多.def文件,如内置/suspend.def,在执行make之后,suspend.o使用suspend.c生成,该文件在发出make之前不存在,但在compile命令之后立即被删除。如何阻止make删除这些源文件?文件内置/Makefile.in在与问题链接的Tar文件中,您可以在中看到对挂起的引用 DEFSRC = $(srcdir)

我不知道
.def
文件是如何使用的,它们是什么,但我希望在创建相应的目标文件后,不要删除与
.def
文件同名的源文件。有什么办法吗


更具体地说,我正在处理并看到许多
.def
文件,如
内置/suspend.def
,在执行
make
之后,
suspend.o
使用
suspend.c
生成,该文件在发出make之前不存在,但在compile命令之后立即被删除。如何阻止make删除这些源文件?

文件
内置/Makefile.in
在与问题链接的Tar文件中,您可以在中看到对
挂起的引用

DEFSRC =  $(srcdir)/alias.def $(srcdir)/bind.def $(srcdir)/break.def \
# ...
          $(srcdir)/source.def $(srcdir)/suspend.def $(srcdir)/test.def \
# ...

Makefile.in
中包含以下模式规则:

# How to make a .o file from a .def file.
.def.o:
        $(RM) $@
        ./$(MKBUILTINS) $(DIRECTDEFINE) $<
        $(CC) -c $(CCFLAGS) $*.c || ( $(RM) $*.c ; exit 1 )
        $(RM) $*.c

# How to make a .c file from a .def file.
.def.c:
        $(RM) $@
        ./$(MKBUILTINS) $(DIRECTDEFINE) $<

# default rule for making a .o file from a .c file
.c.o:
        $(RM) $@
        $(CC) -c $(CCFLAGS) $<
作为最后的命令

您可以删除或注释此行。
如果编译失败,该规则还将删除相应的
.c
文件。如有必要,您也可以将其移除

请注意,此修改可能会更改后续生成的行为,因为现有的
.c
文件将被
make
考虑

需要的其他信息:

Makefile
规则中可以看到,
.def
文件将使用

        ./$(MKBUILTINS) $(DIRECTDEFINE) $<
/$(MKBUILTINS)$(DIRECTDEFINE)$<

这将调用带有附加参数的
$(MKBUILTINS)
,这些参数定义为
-D$(srcdir)
,以及依赖项文件(
$您的
Makefile
中必须有指示
make
删除文件的内容。请在您的问题中显示
Makefile
。我无法复制整个Makefile,因为它超过了30000个字符的限制。我使用指向
tar
文件的链接更新了问题。如果提取,您将获得该Makefile在目录的根目录中。请尝试添加
.SECONDARY:builtins/%.def
,以防由于以下原因而将其删除。如果没有帮助,您必须检查整个Makefile以查找有问题的命令。非常感谢。您是否还可以提供有关
.def
文件以及如何生成源文件的一些信息?
        $(RM) $*.c
        ./$(MKBUILTINS) $(DIRECTDEFINE) $<