关于local variable
通过set命令设置需要的local variable;
通过list命令可以对list变量执行多种形式的操作;
通过${MY_VARIABLE}来使用对应的变量;注意,如果MY_VARIABLE包含空格,那么必须加上双引号"${MY_VARIABLE}";
- list变量在cmake中就是通过
;分隔的字符串,比如set(MY_VARIABLE "a" "b" "c"),那么MY_VARIABLE的值就是"a;b;c"
关于cache variable
所谓的cache variable,其实就是可以在命令行中进行设置的变量,比如CMAKE_BUILD_TYPE;
通过set(MY_CACHE_VARIABLE "VALUE" CACHE STRING "Description")来声明并设置所需的cache variable;
- 注意,cache variable存在的本意是为了使开发人员做出最好的环境配置,而这个配置过程可能会比较反复,因此又引出了一个
CMakeCache.txt的概念,这个文件就是保存好先前的配置,并且如果命令行有了配置修改,那么CMakeCache.txt也需要进行更新;有了CMakeCache.txt的好处就是,不用每次运行cmake的时候都写下全部的配置选项,因为已经被记在CMakeCache.txt里面了; - 因为配置过程的反复,因此可能会多次运行cmake,而为了不让
CMakeLists.txt中的set(... CACHE STRING ...)覆盖之前已有的配置,因此CMAKE默认设置是:set(... CACHE STRING ...)不会覆盖已有的cache variable; - 强制更改cache variable的命令是:
set(MY_CACHE_VARIABLE "VALUE" CACHE STRING "" FORCE) - 通过
option(MY_OPTION "This is settable from the command line" OFF)可以设置bool型的cache variable;
ref
Variables explained – More Modern CMake (hsf-training.github.io)