CMake着色错误和警告

Tom*_*art 10 c++ shell cmake

有没有办法如何生成gcc从Makefile生成的多彩输出cmake?这将使调试应用程序更容易.

sta*_*all 8

从 CMake v3.24开始,有变量CMAKE_COLOR_DIAGNOSTICS请点击该链接获取最新版本的文档。以下是 3.24.2 文档中的引用:

全程启用颜色诊断。

该变量使用三种状态:ONOFF和 未定义。

未定义时:

什么时候ON

  • Makefile 生成器默认生成颜色构建系统消息。CMAKE_COLOR_MAKEFILE未初始化,但可以显式设置OFF为禁用颜色构建系统消息。

  • GNU/Clang 编译器是通过启用颜色诊断 ( ) 的标志来调用的-fcolor-diagnostics

什么时候OFF

如果CMAKE_COLOR_DIAGNOSTICS设置了环境变量,则使用其值。否则,CMAKE_COLOR_DIAGNOSTICS默认情况下不定义。


Ano*_*ous 6

你想要cmake二进制的彩色输出吗?为此,我不知道任何解决方案.

CMake可以生成Makefiles提供有关构建过程的详细(和丰富多彩)信息.可以通过以下方式启用此功能:

SET(CMAKE_COLOR_MAKEFILE ON)
# And optionally
SET(CMAKE_VERBOSE_MAKEFILE ON)
Run Code Online (Sandbox Code Playgroud)

如果您希望gcc输出颜色,请查看colorgccperl脚本.安装它尝试这样的事情:

CC=/usr/bin/colorgcc cmake .....
Run Code Online (Sandbox Code Playgroud)

或者使用gfour的另一个答案中提出的新解决方案- gccfilter


pls*_*k04 5

现在不需要其他工具了。GCC 和 Clang 生成颜色输出,但当它们检测到它们正在像 CMake Makefiles 使用的管道中使用时隐藏它。不过他们有旗帜来强制颜色。

CMakeLists.txt:

if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
    add_compile_options(-fdiagnostics-color=always)
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
    add_compile_options(-fcolor-diagnostics)
endif()
Run Code Online (Sandbox Code Playgroud)

如果有时确实通过管道传输 make 的输出,则可以将其放在标志后面。

颜色输出预览:

颜色输出示例

参考: https://medium.com/@alasher/colored-c-compiler-output-with-ninja-clang-gcc-10bfe7f2b949