cmake有两种变量:normal和cache。参考官网说明, modern cmake
- normal就是我们普通使用的变量,比如
set(VAR "xyz")
- cache是cmake缓存的变量,比如
cmake -D
定义的变量,通常这些变量会存在CMakeCache.txt
里面,第一次跑cmake的时候会生成这个文件 - 两种变量可以同名,当变量
${VAR}
展开时,cmake会先尝试去查找normal变量,如果没找到定义则会去使用cache变量里查找。 - 可以使用
set(VAR "xyz" CACHE STRINGH "this is a comment of VAR")
设置一个Cache变量。注意,这条指令并不会直接将VAR
赋值成"xyz",而是去查找是否已经有名字为VAR
的Cache变量,如果已经存在了则不会产生任何影响,如果不存在才会创建这个Cache 变量。如果想要强制将其值设置成"xyz",可以在最后加FORCE
参数set(VAR "xyz" CACHE STRINGH "this is a comment of VAR" FORCE)
。