CMake add_custom_target:忍者在命令完成之前抑制输出,因此无法进行用户交互
Posted
技术标签:
【中文标题】CMake add_custom_target:忍者在命令完成之前抑制输出,因此无法进行用户交互【英文标题】:CMake add_custom_target: Ninja suppressing output until command completed and therefore user interaction not possible 【发布时间】:2013-11-05 10:55:51 【问题描述】:如果我添加
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
【问题讨论】:
【参考方案1】:我收到了来自 Ninja 邮件列表的反馈。
关于这个主题有一个问题,还有一个补丁(虽然我不确定不缓存它是否也允许交互;鉴于time
的测试结果,可能不是):
Issue。 Patch.
【讨论】:
【参考方案2】:这是忍者设计的一部分。
相关问题:0014544: Remove edit_cache target from ninja output
【讨论】:
嗨!你能更详细地解释一下这个问题是如何相关的吗?以上是关于CMake add_custom_target:忍者在命令完成之前抑制输出,因此无法进行用户交互的主要内容,如果未能解决你的问题,请参考以下文章