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中会显示选项,默认为ON
option(Build_SWIG_DotNet "Build Swig DotNet..." OFF)
# 这里只是判断变量是否被定义过,无法判断是ON,还是OFF
if(Build_SWIG_DotNet)
#Build_SWIG_DotNet变量,被定义过
#option中已经定义了Build_SWIG_DotNet变量,所以Build_SWIG_DotNet无论是ON,还是OFF,都会进来!
else()
#Build_SWIG_DotNet变量,没有被定义过
end()
# 这才是判断是ON,还是OFF
if(${Build_SWIG_DotNet} STREQUAL "ON")
#编译swig dotnet模块
else()
#不编译swig dotnet模块
end()