Определите, какие цели потерпели неудачу в ниндзя все сразу

Иногда я хочу построить несколько целей одновременно:

$ 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

0 ответов

Наткнулся на это, потому что у меня был такой же вопрос.

Есть ли что-то, что я могу успешно построить все, что может быть успешно построено [...]

Да как в 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
Другие вопросы по тегам