variable_watch

監看 CMake 變數的變更。

variable_watch(<variable> [<command>])

如果指定的 <variable> 發生變更,且未指定 <command>,則會列印訊息通知變更。

如果指定了 <command>,則會改為執行此命令。該命令會收到以下參數: COMMAND(<variable> <access> <value> <current_list_file> <stack>)

<variable>

正在存取的變數名稱。

<access>

READ_ACCESSUNKNOWN_READ_ACCESSMODIFIED_ACCESSUNKNOWN_MODIFIED_ACCESSREMOVED_ACCESS 其中之一。UNKNOWN_ 值僅在變數從未被設定時使用。一旦設定後,即使變數稍後被取消設定,在同一次 CMake 執行期間也不會再次使用。

<value>

變數的值。在修改時,這是變數的新(已修改)值。在移除時,該值為空。

<current_list_file>

執行存取之檔案的完整路徑。

<stack>

目前在檔案包含堆疊上的所有檔案的絕對路徑列表,最底層的檔案優先,最後是目前正在處理的檔案(即 current_list_file)。

請注意,對於某些存取(例如 list(APPEND)),監視器會執行兩次,第一次是讀取存取,然後是寫入存取。另請注意,對變數進行 if(DEFINED) 查詢不會註冊為存取,且不會執行監視器。

只能使用此命令監看非快取變數。永遠不會監看對快取變數的存取。但是,快取變數 var 的存在會導致對非快取變數 var 的存取不使用 UNKNOWN_ 前綴,即使非快取變數 var 從未存在過。