关于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)
网友评论