一次确定哪些目标在 ninja 中失败

Determine which targets failed in ninja all at once

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

$ 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

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

Is there something I can that will successfully build all the things that can be successfully built [...]

是的,就像在 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