CMAKE_MESSAGE_CONTEXT¶
在 3.17 版本中新增。
當透過 cmake --log-context
命令列選項或 CMAKE_MESSAGE_CONTEXT_SHOW
變數啟用時,message()
命令會將 CMAKE_MESSAGE_CONTEXT
列表轉換為以方括號括住並以點號分隔的字串,並將其附加到日誌級別為 NOTICE
或更低層級的每一行訊息之前。
為了使日誌上下文有效地運作,專案通常應該 APPEND
和 POP_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`