如何启用 cmake 一次给我一屏的编译输出,而不是只在最后给我转储

如何启用 cmake 一次给我一屏的编译输出,而不是只在最后给我转储

我正在 Debian 测试上运行 cmake 版本 3.23.2。如果我把 -

$cmake .

它会生成输出,但这对我来说太快了,无法阅读。如果我做类似的事情 -

cmake . > cmake-build.txt

仅生成构建的最后五行。我从来不知道/看看是否有任何错误、警告等需要报告。

更新了,这就是我得到的 -

Platform: Linux
Touchscreen input: No (Enable by param -DENABLE_TOUCHSCREEN=ON)
Metaserver: No (Enable by param -DENABLE_METASERVER=ON)
Doxygen documentation: No (Enable by param -DENABLE_DOC=ON)
Game development files: No (Enable by param -DENABLE_DEV=ON)
Upx packer: No (Enable by param -DENABLE_UPX=ON)
X11: Found and enabled (Disable by param -DWITH_X11=OFF)
==================================
-- Configuring done
-- Generating done
-- Build files have been written to: /home/shirish/games/Wyrmgus-master

让我分享一下我做了什么——

~/games/Wyrmgus-master$ mkdir build

~/games/Wyrmgus-master$ cd build/

~/games/Wyrmgus-master/build$ cmake ../ | less

我猜第三个是关键命令。在这里,它只给了我一些但不是全部,至少缺少一些东西,例如之前有一些东西 -

-- The C compiler identification is GNU 11.3.0
-- The CXX compiler identification is GNU 11.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done

我希望之前的几行也被捕获:(

答案1

你应该少学一点!

program | less将把输出program通过寻呼机称为less,以便您可以在闲暇时滚动浏览它。

关于您的用法的一句话cmakecmake .表明您正在执行树内构建。这实际上总是一个坏主意,因为它会使您的源代码与构建结果变得混乱。事实上,很多软件都会拒绝以这种方式构建!

更好的:

mkdir build
cd build
cmake .. | less

并且:从同一目录运行 cmake 两次不会执行任何操作 - 软件生成过程在第一次后已设置。

答案2

日志文件中缺少的消息是通知,CMake 将它们输出到其标准错误。

您需要捕获标准输出和标准错误:

cmake .. |& less

无论如何,在关注构建时,您应该将标准错误与标准输出一起记录:实际的错误消息也会发送到标准错误,而这些是您真正希望看到的消息。

相关内容