大佬教程收集整理的这篇文章主要介绍了build-process – 在出错时删除其他文件,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我们正在使用.deletE_ON_ERROR目标来确保在构建中断或失败时,将删除它在生成过程中的目标文件.但是我们也在编译时使用GCC生成.d文件,这些文件也需要删除.似乎没有一种直截了当的方式来说明这一点.
所以问题是,在发生错误的情况下,有没有一种方法可以同步删除我们的对象和我们的依赖文件?有没有办法我们可以设置规则,以便它知道.d和.o文件同时生成,如果出现错误需要删除?
或者,我们还能做些什么来解决损坏的.d文件的问题吗?沿着这些方向的一个建议是使用临时名称生成.d文件,并且每个文件都有一个单独的编译后步骤,将其复制到正确的名称.
@H_262_8@.deletE_ON_ERROR: all: foo.o %.o %.d: %.c @touch $*.d @touch $*.o @exit 1
当在规则中检测到“错误”时,您将看到使用此makefile,将删除.d和.o文件.这种方法的优点是通过描述如何生成.d文件以及生成它的规则来更准确地表达依赖图.
或者,在这种情况下,通常的范例正如您所建议的那样:让GCC将.d文件生成为临时文件名,并仅在GCC命令成功完成后将其移动到位.通常这是通过sHell的技巧完成的:
all: foo.o %.o: %.c gcc -o $@ -MMD -MF $(basename $@).d.tmp -c $< \ && mv $(basename $@).d.tmp $(basename $@).d
这里的“神奇”技巧是使用GCC标志-MMD,它生成依赖文件作为编译的副作用,-MF,它允许您指定依赖文件的输出名称;以及使用外壳cmd1&& cmd2语法,如果cmd1成功退出,则会导致sHell仅执行cmd2.
@H_262_8@ @H_262_8@以上是大佬教程为你收集整理的build-process – 在出错时删除其他文件全部内容,希望文章能够帮你解决build-process – 在出错时删除其他文件所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。