当使用 Make 的
--output-sync
选项并且出现构建错误时,有什么方法可以让 Make 最后打印错误消息吗?
现在,如果您使用高
-j
参数进行编译,错误消息将在正在编译的其他文件的输出之前打印,我经常需要在终端中滚动很多次才能看到错误消息。
.PHONY: all
all:
@$(MAKE) --no-print-directory -j8 || (sleep 1 && false)
build:
@echo "Building..."
@sleep 1
@echo "Done"
fail:
@echo "Failing..."
@sleep 1
@false
要在 Make 中使用
--output-sync
时最后打印错误消息,可以在主 make 命令后添加 || (sleep 1 && false)
。
如果主 make 命令失败,这将使其休眠 1 秒,然后返回失败退出代码。由于故障发生在睡眠之后,因此它会最后打印错误。
@
抑制回显命令本身。
所以在这个例子中,如果
fail
目标失败,它将打印常规输出,然后“失败...”,然后1秒后打印实际错误。