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 从未存在过。