前言
本篇文章讲解CMake的cmake_dependent_option用法
选项和变量
在讲cmake_dependent_option之前,先讲一下CMake的选项和变量
选项
在CMake中,选项可以用来控制构建过程中的一些开关。我们可以使用option()命令来添加一个选项。option的函数原型如下:
option(<variable> "<help_text>" [value])
- variable:选项的名称
- help_text:选项的描述信息
- value:选项的默认值,可以是ON或者OFF
选项就相当于一个BOOL变量,如果当前定义的选项在定义之前已设置为普通变量或缓存变量,则该命令不执行任何操作
选项的意义
选项的存在意义主要是为了给CMake的用户使用,提供一种在外部控制构建过程的方法,比如我们定义了一个选项
// OPEN_DEBUG选项默认值OFF
option(OPEN_DEBUG "open debug" OFF)
我们在外部可以手动修改OPEN_DEBUG的值
// 这样调用的话OPEN_DEBUG选项的值就是ON,
// 这样,我们就可以在外部对构建过程进行控制
cmake -DOPEN_DEBUG=ON ./
变量
CMake中的变量用于存储数据,并在构建过程中传递信息。我们可以使用set()命令来定义一个变量。set的函数原型如下:
set(<variable> <value>... [PARENT_SCOPE])
- variable:变量的名称
- value:变量的值,如果不设置该值,变量相当于未定义
变量也是可以在外部进行设置的,设置方法和选项一样
cmake_dependent_option
函数原型如下:
cmake_dependent_option(<option> "<help_text>" <value> <depends> <force>)
- option:选项的名称
- help_text:选项的描述信息
- value:选项的生成条件成立的话选项的值
- depends :选项的生成条件,depends可以添加多个
选项或者变量
,选项或者变量之间用分号分隔,整个选项用双引号包含起来。如果depends的所有选项或者变量都成立的话,该宏会生成一个选项或者为已经存在的选项重新赋值。否则,该宏会生成一个本地的变量,这样,后面改变了depends以后再次调用该宏,也不会再次生成选项了。 - force:选项的生成条件不成立的话变量的值