我正在 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
,以便您可以在闲暇时滚动浏览它。
关于您的用法的一句话cmake
:cmake .
表明您正在执行树内构建。这实际上总是一个坏主意,因为它会使您的源代码与构建结果变得混乱。事实上,很多软件都会拒绝以这种方式构建!
更好的:
mkdir build
cd build
cmake .. | less
并且:从同一目录运行 cmake 两次不会执行任何操作 - 软件生成过程在第一次后已设置。
答案2
日志文件中缺少的消息是通知,CMake 将它们输出到其标准错误。
您需要捕获标准输出和标准错误:
cmake .. |& less
无论如何,在关注构建时,您应该将标准错误与标准输出一起记录:实际的错误消息也会发送到标准错误,而这些是您真正希望看到的消息。