簡體   English   中英

CMake 着色錯誤和警告

[英]CMake coloring errors and warnings

有沒有一種方法如何從gcc中生成彩色 output ,它是由 Z272CEADB845851029CCAZ4 生成的cmake的? 這將使調試應用程序變得更加容易。

你想要cmake二進制文件的彩色輸出嗎? 為此,我不知道任何解決方案。

CMake可以生成Makefiles ,提供有關構建過程的詳細(和豐富多彩)信息。 這可以通過以下方式啟用:

SET(CMAKE_COLOR_MAKEFILE ON)
# And optionally
SET(CMAKE_VERBOSE_MAKEFILE ON)

如果您想讓gcc輸出着色,請查看colorgcc perl 腳本。 安裝它后嘗試這樣的事情:

CC=/usr/bin/colorgcc cmake .....

或者使用gfour在另一個答案中提出的較新的解決方案 - gccfilter

試試colout ,它旨在無縫地為任何命令的輸出着色,並帶有g++cmake主題,您可以一起使用:

make something 2>&1 | colout -t cmake | colout -t g++

除了改進 cmake顏色方案外,它還對 g++ 打印的代碼應用了語法着色

現在不需要其他工具。 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()

如果您有時確實通過管道傳輸 make 的輸出,則可以將其放在標志后面。

顏色輸出預覽:

示例顏色輸出

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

下載gccfilter (需要 perl、libregexp 和 libgetopt-argvfile),然后運行:

gccfilter -c cmake ...

這將使來自構建過程的消息着色(我假設是 gcc 消息)。

從 CMake v3.24 開始,就有CMAKE_COLOR_DIAGNOSTICS變量 按照該鏈接獲取最新版本的文檔。 這是 3.24.2 文檔的引用:

始終啟用顏色診斷。

此變量使用三種狀態: ONOFF和未定義。

未定義時:

ON時:

  • Makefile 生成器默認生成顏色構建系統消息。 CMAKE_COLOR_MAKEFILE未初始化,但可以顯式設置為OFF以禁用顏色構建系統消息。

  • 使用啟用顏色診斷的標志 ( -fcolor-diagnostics ) 調用 GNU/Clang 編譯器。

OFF時:

如果設置了CMAKE_COLOR_DIAGNOSTICS環境變量,則使用其值。 否則,默認情況下不定義CMAKE_COLOR_DIAGNOSTICS

基於這個討論,我在~/.bashrcmake創建了一個別名:

alias make="make VERBOSE=1 2>&1 | sed -e 's%^.*: error: .*$%\x1b[37;41m&\x1b[m%' -e 's%^.*: warning: .*$%\x1b[30;43m&\x1b[m%'"

這不是一個很好的解決方案,但它可以完成工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM