variable_watch¶
監看 CMake 變數的變更。
variable_watch(<variable> [<command>])
如果指定的 <variable>
發生變更,且未指定 <command>
,則會列印訊息通知變更。
如果指定了 <command>
,則會改為執行此命令。該命令會收到以下參數: COMMAND(<variable> <access> <value> <current_list_file> <stack>)
<variable>
正在存取的變數名稱。
<access>
為
READ_ACCESS
、UNKNOWN_READ_ACCESS
、MODIFIED_ACCESS
、UNKNOWN_MODIFIED_ACCESS
或REMOVED_ACCESS
其中之一。UNKNOWN_
值僅在變數從未被設定時使用。一旦設定後,即使變數稍後被取消設定,在同一次 CMake 執行期間也不會再次使用。<value>
變數的值。在修改時,這是變數的新(已修改)值。在移除時,該值為空。
<current_list_file>
執行存取之檔案的完整路徑。
<stack>
目前在檔案包含堆疊上的所有檔案的絕對路徑列表,最底層的檔案優先,最後是目前正在處理的檔案(即
current_list_file
)。
請注意,對於某些存取(例如 list(APPEND)
),監視器會執行兩次,第一次是讀取存取,然後是寫入存取。另請注意,對變數進行 if(DEFINED)
查詢不會註冊為存取,且不會執行監視器。
只能使用此命令監看非快取變數。永遠不會監看對快取變數的存取。但是,快取變數 var
的存在會導致對非快取變數 var
的存取不使用 UNKNOWN_
前綴,即使非快取變數 var
從未存在過。