Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Makefile 如何启用多行日志而不是单行进度日志_Makefile_Cmake - Fatal编程技术网

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

Makefile 如何启用多行日志而不是单行进度日志,makefile,cmake,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 链

以下是我的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中可以这样做吗?

ninja的“问题”是,如果您在shell中运行,它可以替换行中的进度输出。截至2017年10月,没有命令行开关或环境变量可以改变这种行为

由于它检查控制台的输出缓冲区,我发现在我的Windows控制台的其他地方管道输出会再次显示多行输出。因此,我使用了以下管道命令:

cmake -G "Ninja" ..
cmake --build . > CON

注意:只有在脚本中没有此调用,而脚本需要将
stdout
输出本身重新传输到日志文件中时,此调用才会起作用。这意味着在执行此管道命令后,输出不再处于标准状态。

来自《忍者》(man ninja):

-v     show all command lines while building

你会使用忍者吗?我对
ninja
也有同样的问题。我认为是的,因为我看到“ninja:no work to do”时不需要构建。不,这将显示所有命令的内容,但不显示注释。如果您确实想在stdout上看到输出(似乎很明显),请使用
cmake--buildtee/dev/null
其中dev/null可以是包含输出的文件名。这通常会禁用颜色输出(来自编译器警告等)