以下是我的cmake的示例输出:
2017/10/27 07:51:46平台被覆盖为' RHEL5_64'
- cmake版本:3.2.3
- 配置完成
- 生成完成
- 构建文件已写入:/ local / home / etc
[3/3]链接CXX共享库libsample_z.so
最后一行实际显示进度(由 [3/3] 表示),因此就地覆盖;所以我看不到所有日志(即消息对应 [1/3] 和 [2/3] )。我希望cmake打印所有日志以保持自己的行,例如:
链接CXX共享库libsample_x.so
链接CXX共享库libsample_y.so
链接CXX共享库libsample_z.so
在cmake中可以做什么来记录这样的?
答案 0 :(得分:3)
ninja
的“问题”是automatically detects,如果你从shell运行它可以替换行中的进度输出。还有 - 截至2017年10月 - 没有命令行开关或环境变量来改变这种行为。
由于它检查控制台的输出缓冲区,我发现在我的Windows控制台的其他地方输出管道确实再次显示多行输出。所以我使用了以下管道命令:
cmake -G "Ninja" ..
cmake --build . > CON
注意:只有在脚本中没有这个调用的情况下才会有效,这个脚本再次需要stdout
输出来管道它,例如进入日志文件。这意味着在此管道命令之后输出不再在stdout
上。
答案 1 :(得分:0)
来自man ninja
:
-v show all command lines while building
答案 2 :(得分:0)
与接受答案类似,另一种选择是通过管道将 ninja 打勾到 cat 看不到终端。
ninja | cat -
这将为您提供多行输出,但您也会失去任何控制台着色。