如何清除/删除缓存变量

Dou*_*oug 12 cmake

试图find_path做我想做的事.

find_path(temmp include/help.h)
message("temmp= ${temmp}")
Run Code Online (Sandbox Code Playgroud)

找到help.h.输出是 temmp= /usr/local/toolA

find_path(temmp include/foo.shoe)
message("temmp= ${temmp}")
Run Code Online (Sandbox Code Playgroud)

foo.shoe不存在(未找到).输出是temmp= /usr/local/toolA 缓存变量存在,因此变量(temmp)是不变的.

我尝试用以下方法清除缓存var:

set (temmp "" CACHE INTERNAL "")
find_path(temmp include/help.h)
message("temmp= ${temmp}")
Run Code Online (Sandbox Code Playgroud)

没变.变量已清除,但仍然存在.输出是temmp= (find_path不运行.)

如何temmp从缓存中删除变量?(我想强迫它find_path再次运行.)

Fra*_*ser 14

你可以使用unset:

unset(temmp CACHE)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,这些find_path电话应该更像是:

find_path(temmp help.h include)
Run Code Online (Sandbox Code Playgroud)