CACHE变量

参考文章:

  1. CMake官方文档——set
  2. cmake cache变量

CMake中有两种变量

  1. Cache Variables:变量被显示申明成CACHE变量,它就会显示在CMake GUI中
    1. set(MY_CACHE_VAL "666" CACHE STRING INTERNAL)
    2. 相当于全局变量
  2. Normal Variables:没有被申明成CACHE的变量,都是Normal变量
    1. set(MY_VAL "666")
    2. 作用域是整个CMakeLists.txt文件

Cache变量的定义:

  1. set(<variable> <value>... CACHE <type> <docstring> [FORCE])

参数分组

在CMake GUI的界面中,有些变量会分组表示

  1. 这些变量是按字符_来分组的
  2. 组名是_前面的名字

将参数设置为高级选项

  1. # 将LibHello_INCLUDE_DIR设置为高级选项
  2. set(LibHello_INCLUDE_DIR ${LibHello_INCLUDE_DIR} CACHE) #将该变量设置成cache变量
  3. mark_as_advanced(LibHello_INCLUDE_DIR)

为参数添加可选项

  1. # 为CMAKE_BUILD_TYPE添加四个选项
  2. set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release"
  3. "MinSizeRel" "RelWithDebInfo")

可选参数

  1. # GUI中会显示选项,默认为ON
  2. option(Build_SWIG_DotNet "Build Swig DotNet..." OFF)
  3. # 这里只是判断变量是否被定义过,无法判断是ON,还是OFF
  4. if(Build_SWIG_DotNet)
  5. #Build_SWIG_DotNet变量,被定义过
  6. #option中已经定义了Build_SWIG_DotNet变量,所以Build_SWIG_DotNet无论是ON,还是OFF,都会进来!
  7. else()
  8. #Build_SWIG_DotNet变量,没有被定义过
  9. end()
  10. # 这才是判断是ON,还是OFF
  11. if(${Build_SWIG_DotNet} STREQUAL "ON")
  12. #编译swig dotnet模块
  13. else()
  14. #不编译swig dotnet模块
  15. end()