使用make --keep-going时,依赖配方失败后如何执行主目标配方
Make --keep-going 模式下依赖失败仍执行主目标配方的解决方案
我在使用make的--keep-going选项(这是我们构建宏中的默认未启用选项,用于执行完整构建)时遇到了问题:这个选项本应让make在返回非零状态退出前,继续处理待处理目标的其他依赖项,必要时重新构建它们,但当某个依赖项的配方执行失败时,主目标的配方完全不会执行。我希望即使在这种情况下,主目标的配方仍能执行,尝试过--ignore-errors选项但没有效果。
我的Makefile规则示例如下:
program.exe: program.txt module.linkable link to exe module.linkable: module.txt compile to linkable
当module.linkable的编译规则执行失败时,program.exe的链接规则不会执行,但我需要在启用--keep-going时仍能触发该链接规则。
解决方案
我已经找到了解决办法:在编译/链接的配方中,原本程序执行失败时会调用exit 100返回非零状态码,将其改为exit 0后,问题就解决了。由于exit 100是构建宏的默认行为,我可以通过给构建宏传入特殊参数,让make在编译/链接失败时执行exit 0。
内容的提问来源于stack exchange,提问作者kahoona
相关产品推荐
相关产品推荐

