CMake的cmake_dependent_option用法

2024-03-07 14:52
文章标签 用法 cmake option dependent

本文主要是介绍CMake的cmake_dependent_option用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

本篇文章讲解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:选项的生成条件不成立的话变量的值

这篇关于CMake的cmake_dependent_option用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/783884

相关文章

bytes.split的用法和注意事项

当然,我很乐意详细介绍 bytes.Split 的用法和注意事项。这个函数是 Go 标准库中 bytes 包的一个重要组成部分,用于分割字节切片。 基本用法 bytes.Split 的函数签名如下: func Split(s, sep []byte) [][]byte s 是要分割的字节切片sep 是用作分隔符的字节切片返回值是一个二维字节切片,包含分割后的结果 基本使用示例: pa

UVM:callback机制的意义和用法

1. 作用         Callback机制在UVM验证平台,最大用处就是为了提高验证平台的可重用性。在不创建复杂的OOP层次结构前提下,针对组件中的某些行为,在其之前后之后,内置一些函数,增加或者修改UVM组件的操作,增加新的功能,从而实现一个环境多个用例。此外还可以通过Callback机制构建异常的测试用例。 2. 使用步骤         (1)在UVM组件中内嵌callback函

这些ES6用法你都会吗?

一 关于取值 取值在程序中非常常见,比如从对象obj中取值 const obj = {a:1b:2c:3d:4} 吐槽: const a = obj.a;const b = obj.b;const c = obj.c;//或者const f = obj.a + obj.b;const g = obj.c + obj.d; 改进:用ES6解构赋值

2021-8-14 react笔记-2 创建组件 基本用法

1、目录解析 public中的index.html为入口文件 src目录中文件很乱,先整理文件夹。 新建components 放组件 新建assets放资源   ->/images      ->/css 把乱的文件放进去  修改App.js 根组件和index.js入口文件中的引入路径 2、新建组件 在components文件夹中新建[Name].js文件 //组件名首字母大写

Cmake之3.0版本重要特性及用法实例(十三)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧

关于断言的部分用法

1、带变量的断言  systemVerilog assertion 中variable delay的使用,##[variable],带变量的延时(可变延时)_assertion中的延时-CSDN博客 2、until 的使用 systemVerilog assertion 中until的使用_verilog until-CSDN博客 3、throughout的使用   常用于断言和假设中的

ExpandableListView的基本用法

QQ上的好友列表在Android怎么实现,有一个最简单的方法,那就是ExpandableListView,下面简单介绍一下ExpandableListview的用法。 先看看效果图,没有找到大小合适的图片,所以凑合着看吧。     一、准备工作(界面,和需要的数据)             <? xml   version = "1.0"   encoding =

Hbase 查询相关用法

Hbase 查询相关用法 public static void main(String[] args) throws IOException {//Scan类常用方法说明//指定需要的family或column ,如果没有调用任何addFamily或Column,会返回所有的columns; // scan.addFamily(); // scan.addColumn();// scan.se

ubuntu通过apt的方式更新cmake到最新版(ppa)

添加签名密钥 wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | sudo apt-key add - 将存储库添加到您的源列表并进行更新 稳定版 sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic ma

Windows下使用cmake编译OpenCV

Windows下使用cmake编译OpenCV cmake下载OpenCV下载编译OpenCV cmake下载 下载地址:https://cmake.org/download/ 下载完成,点击选择路径安装即可 OpenCV下载 下载地址:https://github.com/opencv/opencv/releases/tag/4.8.1因为我们是编译OpenCV,下图选择