从 CMake v3.24开始,有变量CMAKE_COLOR_DIAGNOSTICS。请点击该链接获取最新版本的文档。以下是 3.24.2 文档中的引用:
全程启用颜色诊断。
该变量使用三种状态:
ON、OFF和 未定义。未定义时:
Makefile 生成器将变量初始化
CMAKE_COLOR_MAKEFILE为ON. 它控制颜色构建系统消息。GNU/Clang 编译器不会使用任何颜色诊断标志来调用。
什么时候
ON:
Makefile 生成器默认生成颜色构建系统消息。
CMAKE_COLOR_MAKEFILE未初始化,但可以显式设置OFF为禁用颜色构建系统消息。GNU/Clang 编译器是通过启用颜色诊断 ( ) 的标志来调用的
-fcolor-diagnostics。什么时候
OFF:
默认情况下, Makefile 生成器不会生成颜色构建系统消息。
CMAKE_COLOR_MAKEFILE未初始化,但可以显式设置ON为启用颜色构建系统消息。GNU/Clang 编译器通过禁用颜色诊断 ( ) 的标志来调用
-fno-color-diagnostics。如果
CMAKE_COLOR_DIAGNOSTICS设置了环境变量,则使用其值。否则,CMAKE_COLOR_DIAGNOSTICS默认情况下不定义。
你想要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
现在不需要其他工具了。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
| 归档时间: |
|
| 查看次数: |
8238 次 |
| 最近记录: |