gpt4 book ai didi

makefile - 如何在 GNU make 中捕获错误和中断?

转载 作者:行者123 更新时间:2023-12-02 21:08:50 32 4
gpt4 key购买 nike

我想知道是否有一种方法可以在 GNU make 中实现 trap,类似于 BASH 中内置的方法?

如果用户按 CTRL-C,或者如果 make 本身失败(非零退出),我想调用特定的目标或宏。

最佳答案

目前,GNU make 还没有 native 支持。

但是有一个可靠的解决方法:

.PHONY: internal-target external-target

external-target:
bash -c "trap 'trap - SIGINT SIGTERM ERR; <DO CLEANUP HERE>; exit 1' SIGINT SIGTERM ERR; $(MAKE) internal-target"

internal-target:
echo "doing stuff here"

这会捕获中断、终止和任何非零退出代码。

注意 $(MAKE)因此 cmdline 会覆盖并将选项传递给 submake。

在陷阱中:

  • 清除陷阱处理程序(带 -)
  • 进行清理
  • 以非零退出状态退出,因此构建自动化工具会报告失败的构建。

DELETE_ON_ERROR 不适用于目录,因此这是 mktemp -d 之后清理的关键,例如

替换<DO CLEANUP HERE>具有有效的 CMD。

关于makefile - 如何在 GNU make 中捕获错误和中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/974077/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com