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) $<