2025年3月9日 星期日

在cmake中印debug msg

在 CMake 中輸出調試信息,可以使用 message() 函數。這個函數允許你在 CMake 配置過程中打印訊息到命令行,對於調試 CMake 配置或檢查變數的值非常有用。

使用 message() 函數印出調試訊息

基本語法:

message([<mode>] "your message")

其中,<mode> 可以是以下幾個選項之一:

  • STATUS: 默認模式,會以普通訊息的形式顯示。
  • WARNING: 顯示警告訊息,會以黃色的警告形式顯示。
  • AUTHOR_WARNING: 只有當你在 CMake 中啟用了 CMAKE_SUPPRESS_DEVELOPER_WARNINGS 時,這個訊息才會顯示。
  • SEND_ERROR: 顯示錯誤訊息,並且會中止 CMake 的處理過程。
  • FATAL_ERROR: 顯示致命錯誤訊息,並且立即終止 CMake 的處理過程。

範例:

1. 普通調試訊息

message(STATUS "This is a debug message")

這會顯示一條普通的訊息,例如:

-- This is a debug message

2. 警告訊息

message(WARNING "This is a warning message")

這會顯示一條警告訊息,例如:

CMake Warning at CMakeLists.txt:10 (message):
This is a warning message

3. 顯示變數值

你可以顯示變數的值來幫助調試 CMake 配置。例如,顯示 CMAKE_BUILD_TYPE 的值:

message(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")

這會顯示類似於下面的輸出:

-- CMAKE_BUILD_TYPE: Debug

4. 顯示錯誤訊息並中止

如果你想在某些條件下停止 CMake 配置過程並顯示錯誤訊息,可以使用 SEND_ERRORFATAL_ERROR

if(NOT DEFINED MY_VARIABLE)
message(SEND_ERROR "MY_VARIABLE is not defined!") endif()

這會停止 CMake 配置並顯示錯誤訊息:

CMake Error at CMakeLists.txt:12 (message):
MY_VARIABLE is not defined!

5. 輸出複雜資料結構

如果你需要調試更複雜的資料結構(例如列表),你可以將其轉換為字符串並打印:

set(MY_LIST "Item1" "Item2" "Item3")
message(STATUS "MY_LIST: ${MY_LIST}")

這會顯示:

-- MY_LIST: Item1;Item2;Item3


沒有留言:

張貼留言