CMake add_custom_target: Ninja подавляет вывод до завершения команды, поэтому взаимодействие с пользователем невозможно.

Если я добавлю

add_custom_target(dummy COMMAND dir && sleep 2)

А потом

ninja dummy

Содержимое каталога визуализируется только после завершения сна. Я понимаю, что у этого механизма есть ценное свойство, которое позволяет Ninja показывать очень аккуратный/последовательный вывод даже при параллельном выполнении нескольких заданий.

Однако это проблема в следующем практическом случае: мой реальный add_custom_target будет выполнять программу, которая в какой-то момент предложит пользователю ввести пароль, но Ninja в основном блокирует любое взаимодействие.

Есть ли обходной путь для этого?

Примечание. Использование параметра -v (подробный) не помогает, а также -j 1 (только одно задание за раз).

Еще один пример:

add_custom_target(dummy COMMAND cmd /c time)

И:

D:\build> ninja dummy
[1/1] cmd.exe /c cd D:\build && cmd /c time
FAILED: cmd.exe /c cd D:\build && cmd /c time
The current time is: 13:06:08.57
Enter the new time: ninja: build stopped: subcommand failed.

Некоторые советы:
ninja-build > Запуск интерактивных приложений из правил сборки


person Antonio    schedule 05.11.2013    source источник


Ответы (2)


Я получил отзыв из списка рассылки Ninja.

На эту тему есть проблема и патч (хотя я не уверен, что без кэширования это также позволит взаимодействие; учитывая результат теста с time, вероятно, нет):

Проблема. исправление.

person Antonio    schedule 07.11.2013

Это часть дизайна Ninja.

Связанная проблема: 0014544: удалить цель edit_cache из вывода ниндзя

person steveire    schedule 05.11.2013
comment
Привет! Не могли бы вы немного подробнее объяснить, как связана эта проблема? - person Antonio; 06.11.2013