首页 > 解决方案 > 确定哪些目标在忍者中一次全部失败

问题描述

有时我想一次构建多个目标:

$ ninja A B C D -j10

这些目标中的一些可能无法构建。有什么我可以做到的:

以下将起作用,但我觉得应该有一种更有效的方法:

for target in A B C D; do
    if ! ninja ${target} -j10 >/dev/null 2>/dev/null; then 
        echo "${target} failed"
    fi
done

标签: ninja

解决方案


偶然发现这个,因为我有同样的问题。

有什么我可以成功构建所有可以成功构建的东西 [...]

是的,就像make您可以提供-k选项一样。

-k N keep going until N jobs fail [default=1]

继续构建,直到所有任务完成或失败:

ninja -k 0

结合这与知道失败的目标将FAILED: <target_name>在标准输出上列出:

ninja -k0 | grep FAILED > failed_targets.log

推荐阅读