如何启用多行日志而不是单行进度日志

时间:2017-10-27 08:17:30

标签: makefile cmake

以下是我的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中可以做什么来记录这样的?

3 个答案:

答案 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 -

这将为您提供多行输出,但您也会失去任何控制台着色。