[英]CMake coloring errors and warnings
有沒有一種方法如何從gcc
中生成彩色 output ,它是由 Z272CEADB845851029CCAZ4 生成的cmake
的? 這將使調試應用程序變得更加容易。
試試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 文檔的引用:
始終啟用顏色診斷。
此變量使用三種狀態:
ON
、OFF
和未定義。未定義時:
Makefile 生成器將
CMAKE_COLOR_MAKEFILE
變量初始化為ON
。 它控制顏色構建系統消息。GNU/Clang 編譯器不會使用任何顏色診斷標志調用。
ON
時:
Makefile 生成器默認生成顏色構建系統消息。
CMAKE_COLOR_MAKEFILE
未初始化,但可以顯式設置為OFF
以禁用顏色構建系統消息。使用啟用顏色診斷的標志 (
-fcolor-diagnostics
) 調用 GNU/Clang 編譯器。
OFF
時:
Makefile 默認情況下,生成器不生成顏色構建系統消息。
CMAKE_COLOR_MAKEFILE
未初始化,但可以顯式設置為ON
以啟用顏色構建系統消息。使用禁用顏色診斷的標志 (
-fno-color-diagnostics
) 調用 GNU/Clang 編譯器。如果設置了
CMAKE_COLOR_DIAGNOSTICS
環境變量,則使用其值。 否則,默認情況下不定義CMAKE_COLOR_DIAGNOSTICS
。
基於這個討論,我在~/.bashrc
為make
創建了一個別名:
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.