首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“--持续”将致命的构建转化为成功的构建。

“--持续”将致命的构建转化为成功的构建。
EN

Stack Overflow用户
提问于 2015-08-26 08:59:37
回答 2查看 2.5K关注 0票数 3

来自https://www.gnu.org/software/make/manual/html_node/Errors.html#Errors

通常,make在这种情况下会立即放弃,返回非零状态。但是,如果指定了-k--keep-going标志,make将继续考虑挂起的目标的其他先决条件,必要时重新构建这些目标,在放弃之前重新生成,并返回非零状态。例如,在编译一个对象文件时出错后,make -k将继续编译其他对象文件,尽管它已经知道链接它们是不可能的。*说明备选办法摘要:备选案文摘要。

换句话说,--keep-going并不意味着Make 完全忽略了错误,并返回了exit-status = 0。

相反,这意味着使will 暂时挂起错误,并且只继续使用其他独立构建(即不依赖于此失败目标的构建)。然而,它最终将“恢复”这些错误,并相应地失败。

但是,请考虑makefile:

代码语言:javascript
复制
# If 'd' was a "regular" file, we remove it first.
$(shell rm -rf D)
# Force make to do a "direcotry-serach(a "vpathization")", for the file 'all'.
$(shell rm -rf all)
# 'D' is a VPATH directory
$(shell mkdir D)
# Make will associate 'all' with 'D/all'
$(shell touch D/all)


VPATH = D


root: all;

# Building 'all' results in a fatal error.
all ::
    false

.SILENT: D/all

执行,我们得到:

代码语言:javascript
复制
# The "normal" case (without '--keep-going').
$ make -j
makefile:15: recipe for target 'D/all' failed
make: *** [D/all] Error 1

$ echo 'exit-status is: '"'$?'"
exit-status is: '2'

##########################

# Run with '--keep-going'
$ make -j -k
makefile:15: recipe for target 'D/all' failed
make: *** [D/all] Error 1

$ echo 'exit-status is: '"'$?'"
exit-status is: '0'

构建失败,因为前提条件无法构建。然而,在第二次运行时,要返回successfully,其中有-k (--keep-going)。

对失败(和不完整)构建进行传递,就好像它是一个成功的构建一样。

这是预期的行为还是上面的例子有一些错误?

EN

回答 2

Stack Overflow用户

发布于 2015-10-19 14:50:55

当使用--keep-going时,返回的退出代码是最后一个目标状态的退出代码。目标"all“失败,但由于您想要继续,目标"root”继续,这是成功的。

代码语言:javascript
复制
 make -j -k all || echo failure

你会看到,只要建造“所有”,就会有一个非零的出口。

票数 3
EN

Stack Overflow用户

发布于 2021-01-21 13:32:34

这似乎是人们所期待的行为。为了解决这个问题

代码语言:javascript
复制
$ make -j -k
$ make -j 1>/dev/null 2>/dev/null
  1. 越跑越好。记录所有错误。
  2. 停止错误(使用退出代码),不要打印错误(它们将从(1)中重复)。

第二次运行应该非常短,因为其他一切都是构建的。它将设置正确的退出状态。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32222204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档