CMAKE_MESSAGE_CONTEXT

新增於版本 3.17。

當透過 cmake --log-context 命令列選項或 CMAKE_MESSAGE_CONTEXT_SHOW 變數啟用時,message() 命令會將 CMAKE_MESSAGE_CONTEXT 列表轉換為以點分隔並以方括號括起來的字串,並將其前置於日誌級別為 NOTICE 及更低的所有訊息行的開頭。

為了使日誌上下文有效地運作,專案通常應該 APPENDPOP_BACK 一個項目到 CMAKE_MESSAGE_CONTEXT 的當前值,而不是替換它。專案不應假設原始碼樹頂端的訊息上下文為空,因為在某些情況下,上下文可能已經被設定(例如,階層式專案)。

警告

有效的上下文名稱僅限於任何可用作 CMake 變數名稱的名稱。所有以下底線或字串 cmake_ 開頭的名稱也保留供 CMake 使用,專案不應使用。

範例

function(bar)
  list(APPEND CMAKE_MESSAGE_CONTEXT "bar")
  message(VERBOSE "bar VERBOSE message")
endfunction()

function(baz)
  list(APPEND CMAKE_MESSAGE_CONTEXT "baz")
  message(DEBUG "baz DEBUG message")
endfunction()

function(foo)
  list(APPEND CMAKE_MESSAGE_CONTEXT "foo")
  bar()
  message(TRACE "foo TRACE message")
  baz()
endfunction()

list(APPEND CMAKE_MESSAGE_CONTEXT "top")

message(VERBOSE "Before `foo`")
foo()
message(VERBOSE "After `foo`")

list(POP_BACK CMAKE_MESSAGE_CONTEXT)

這會產生以下輸出

-- [top] Before `foo`
-- [top.foo.bar] bar VERBOSE message
-- [top.foo] foo TRACE message
-- [top.foo.baz] baz DEBUG message
-- [top] After `foo`