CACHE变量
参考文章:
CMake中有两种变量
- Cache Variables:变量被显示申明成CACHE变量,它就会显示在CMake GUI中
- 如
set(MY_CACHE_VAL "666" CACHE STRING INTERNAL) - 相当于全局变量
- 如
- Normal Variables:没有被申明成CACHE的变量,都是Normal变量
- 如
set(MY_VAL "666") - 作用域是整个CMakeLists.txt文件
- 如
Cache变量的定义:
set(<variable> <value>... CACHE <type> <docstring> [FORCE])
参数分组
在CMake GUI的界面中,有些变量会分组表示
- 这些变量是按字符
_来分组的 - 组名是
_前面的名字
将参数设置为高级选项
# 将LibHello_INCLUDE_DIR设置为高级选项set(LibHello_INCLUDE_DIR ${LibHello_INCLUDE_DIR} CACHE) #将该变量设置成cache变量mark_as_advanced(LibHello_INCLUDE_DIR)
为参数添加可选项
# 为CMAKE_BUILD_TYPE添加四个选项set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release""MinSizeRel" "RelWithDebInfo")
可选参数
# GUI中会显示选项,默认为ONoption(Build_SWIG_DotNet "Build Swig DotNet..." OFF)# 这里只是判断变量是否被定义过,无法判断是ON,还是OFFif(Build_SWIG_DotNet)#Build_SWIG_DotNet变量,被定义过#option中已经定义了Build_SWIG_DotNet变量,所以Build_SWIG_DotNet无论是ON,还是OFF,都会进来!else()#Build_SWIG_DotNet变量,没有被定义过end()# 这才是判断是ON,还是OFFif(${Build_SWIG_DotNet} STREQUAL "ON")#编译swig dotnet模块else()#不编译swig dotnet模块end()
