CMake add_custom_target:Ninja抑制输出直到命令完成,因此无法进行用户交互

时间:2013-11-05 10:55:51

标签: cmake 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 > Launching interactive apps from build rules

2 个答案:

答案 0 :(得分:0)

这是Ninja设计的一部分。

相关问题: 0014544: Remove edit_cache target from ninja output

答案 1 :(得分:0)

我收到了Ninja邮件列表的反馈。

这个主题有一个问题,还有一个补丁(虽然我不确定是否通过缓存它也会允许交互;考虑到time的测试结果,可能不是):

IssuePatch