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`