【CMake】(13)流程控制

条件判断

基本语法

条件判断的基本语法如下:

if(<condition>)<commands>
elseif(<condition>)<commands>
else()<commands>
endif()
  • if(<condition>):检查条件是否满足。如果满足,则执行随后的命令直到遇到elseifelseendif
  • elseif(<condition>):可选。如果前面的ifelseif的条件不满足,将检查这里的条件。可以有多个elseif块。
  • else():可选。如果所有的ifelseif条件都不满足,则执行else块中的命令。
  • endif():结束条件判断块。

在CMake中,基本表达式用于if语句中,以决定是否执行特定的代码块。这些表达式可以是常量、变量或字符串,CMake会根据这些表达式的值来判断条件为真(True)或假(False)。

判定表达式

当表达式的值为以下之一时,条件被认为是真(True):

  • 数值 1:代表真。
  • 字符串 ON:明确表示启用或真。
  • 字符串 YES:同样表示肯定或真。
  • 字符串 TRUE:布尔真值。
  • 字符串 Y:简短的肯定回答,表示真。
  • 非零数值:在大多数编程语言中,非零值通常被解释为真。
  • 非空字符串:任何非空的字符串都被视为真,除了下面将要提到的特定假值字符串外。

当表达式的值为以下之一时,条件被认为是假(False):

  • 数值 0:代表假。
  • 字符串 OFF:明确表示禁用或假。
  • 字符串 NO:表示否定或假。
  • 字符串 FALSE:布尔假值。
  • 字符串 N:简短的否定回答,表示假。
  • 字符串 IGNORE:有时用于特定的设置中,解释为假。
  • 字符串 NOTFOUND:特别在查找库或程序时,如果未找到,这个值表示假。
  • 空字符串:表示没有值,解释为假。
# 示例:变量设置为非零值
set(MY_VAR 42)
if(MY_VAR)message("MY_VAR is true")
endif()# 示例:变量设置为假值字符串
set(MY_VAR "FALSE")
if(NOT MY_VAR)message("MY_VAR is false")
endif()# 示例:使用未定义的变量
if(UNDEFINED_VAR)message("This will not be printed")
else()message("UNDEFINED_VAR is considered false")
endif()

逻辑判断

逻辑操作符NOTANDOR允许你根据一个或多个条件来执行特定的代码块。这些操作符的行为与大多数编程语言中的逻辑操作符类似,非常直观。

NOT

NOT操作符用于取反一个条件的结果。如果原条件为真(True),则NOT后的结果为假(False)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/705351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java虚拟机(JVM)的调优是为了提高Java应用程序的性能、稳定性和资源利用率

Java虚拟机&#xff08;JVM&#xff09;的调优是为了提高Java应用程序的性能、稳定性和资源利用率。以下是一些建议的JVM调优技巧&#xff1a; 调整堆大小&#xff1a; 设置堆的大小以适应应用程序的需求。通过调整-Xms&#xff08;初始堆大小&#xff09;和-Xmx&#xff08;最…

GDB之(1)入门指令参数介绍

GDB之(1)基础入门指令参数介绍 Author&#xff1a;Once Day Date: 2022年7月29日/2024年2月26日 漫漫长路&#xff0c;才刚刚开始… 全系列文章请查看专栏: Linux实践记录_Once-Day的博客-CSDN博客 推荐参考文档&#xff1a; GDB: The GNU Project Debugger (sourceware.o…

机器学习 | 基本概念梳理——数据集评估,任务,训练和测试,期望结果

文章目录 1 整体概念梳理1.1 数据集与数据术语——原材料1.2 任务术语——目标1.3 训练和测试术语——怎么做1.4 结果——预期期望 整体框架 机器学习的基本概念全梳理 我们通过一个生动形象的例子来介绍这些概念 我们假设有一个任务是根据地理天气等特征位置预测经纬度 1 整…

php查看哪个类的调用当前函数

在 PHP 中&#xff0c;你可以通过使用 debug_backtrace() 函数来查看当前类的哪个方法调用了当前方法。debug_backtrace() 函数返回一个包含调用堆栈信息的数组&#xff0c;你可以从中获得有关调用者的信息。 下面是一个简单的示例&#xff1a; class MyClass {public functi…

2023 re:Invent 用 Amazon Q 打造你的知识库

前言 随着 ChatGPT 的问世&#xff0c;我们迎来了许多创新和变革的机会。一年一度的亚马逊云科技大会 re:Invent 也带来了许多前言的技术&#xff0c;其中 Amazon CEO Adam Selipsky 在 2023 re:Invent 大会中介绍 Amazon Q 让我印象深刻&#xff0c;这预示着生成式 AI 的又一…

VUE从0到1创建项目及基本路由、页面配置

一、创建项目:(前提已经安装好vue和npm) 目录:E:\personal\project_pro\ windows下,win+R 输入cmd进入命令行: cd E:\personal\project_pro E:# 创建名为test的项目 vue create test# 用上下键选择vue2或vue3,回车确认创建本次选择VUE3 创建好项目后,使用…

FPS游戏之漫谈开房间流程

在FPS游戏中创建房间的前端和后端逻辑通常如下&#xff1a; 前端&#xff08;客户端&#xff09;逻辑&#xff1a; 用户界面设计&#xff1a; 提供一个创建房间的表单&#xff0c;包含输入框&#xff08;房间名、可选密码、房间类型选择等&#xff09;。提供创建按钮&#xff…

Nginx之rewrite重写功能

一、rewrite概述 1、rewrite功能 访问重写 rewrite 是 Nginx HTTP 请求处理过程中的一个重要功能&#xff0c;它是以模块的形式存在于代码中的&#xff0c;其功能是对用户请求的 URI 进行 PCRE 正则重写&#xff0c;然后返回 30 重定向跳转或按条件执行相关配置。 Nginx服务…

重新认识linux中的sudo命令

以前一直以为sudo命令就是以root权限执行命令&#xff0c;打了HACKSUDO: THOR靶场才发现原来sudo还可以有很多别的用法。 sudo的常用参数&#xff1a; -u&#xff1a;指定以特定用户的身份执行命令&#xff0c;格式为 -u username。-g&#xff1a;指定以特定用户组的身份执行…

idea 创建打包 android App

1、使用 idea 创建 android 工程 2、 配置构建 sdk 3、配置 gradle a、进入 gradle 官网&#xff0c;选择 install &#xff08;默认是最新版本&#xff09; b、选择包管理安装&#xff0c;手动安装选择下面一个即可 c、安装 sdk 并通过 sdk 安装 gradle 安装 sdk&#xff1a…

ABAP性能优化总结

前言 程序的效率是每个程序员开发者都应该重视的,无论您是采用哪一种语言进行开发. 程序有时候越短,并不一定越快,有时候程序很多代码,但不一定会很慢. 性能是一把双刃剑, 获得时间效率的同时, 牺牲的是空间的开销. 这里提供一些建议以提高你的程序运行速度和减低系统荷载。AB…

软件无线电SDR加人工智能算法实现无人机频谱探测

通用软件无线电接收机作为传感器实时接收探测无线电信号&#xff0c;加上深度学习算法实现频谱识别&#xff0c;(https://img-blog.csdnimg.cn/5a6c4d89a047453a94f763f4e67aeb17.png)

合并果子(哈夫曼树)NOIP2004提高组

在一个果园里&#xff0c;达达已经将所有的果子打了下来&#xff0c;而且按果子的不同种类分成了不同的堆。 达达决定把所有的果子合成一堆。 每一次合并&#xff0c;达达可以把两堆果子合并到一起&#xff0c;消耗的体力等于两堆果子的重量之和。 可以看出&#xff0c;所有…

个人编译踩的坑

CMake引入第三方库 find_package(PkgConfig REQUIRED) pkg_search_module(alibabacloud-oss-cpp-sdk IMPORTED_TARGET alibabacloud-oss-cpp-sdk) message(STATUS "AliOSS include path: ${alibabacloud-oss-cpp-sdk_INCLUDE_DIRS}") message(STATUS "AliOSS l…

大话设计模式——3.建造者模式(Builder Pattern)

1.定义&#xff1a; 将一个复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。UML图 2.示例&#xff1a; 汽车或者电脑的组装可以采用构造者模式进行设计&#xff0c;如汽车的引擎或者轮胎&#xff0c;电脑的处理器、内存、主板等都可以进行…

flutter简单的MethodChannel通道Demo(引入调用小红书sdk)

flutter端创建MethodChannel类 import package:flutter/services.dart;//MethodChannel const methodChannel const MethodChannel(com.flutter.demo.MethodChannel);class FlutterMethodChannel {/** MethodChannel flutter给原生发信息* 在方法通道上调用方法invokeMethod*…

FPS游戏漫谈System.GC.Collect()强制进行垃圾回收

在Unity中&#xff0c;System.GC.Collect()用于强制进行垃圾回收&#xff0c;但是它是一个相当耗时的操作&#xff0c;可能会导致游戏的帧率下降&#xff0c;甚至出现卡顿。因此&#xff0c;你应该尽量避免在游戏的主循环中频繁调用它。以下是一些关于在Unity中使用System.GC.C…

Java做个比对数据的框架

要创建一个Java中的数据比对框架&#xff0c;你需要考虑框架的架构、可扩展性、模块化和可重用性。以下是一个简单的步骤&#xff0c;指导你如何构建这样的框架&#xff1a; 定义框架的核心接口和抽象类&#xff1a; 定义数据源的接口&#xff0c;例如DataSource&#xff0c;用…

Java实战:Spring Boot接口防止重复提交

本文将详细介绍如何在Spring Boot应用程序中防止接口重复提交。我们将探讨重复提交的基本概念&#xff0c;以及如何使用Spring Boot和第三方库来实现接口的防重复提交功能。此外&#xff0c;我们将通过具体的示例来展示如何在Spring Boot应用程序中配置和使用防重复提交功能&am…

[开源协议] 什么是MIT协议及其使用场景

什么是MIT协议? MIT协议是一种开放源代码软件授权协议&#xff0c;全称为Massachusetts Institute of Technology License。该协议允许自由地使用、复制、修改、合并、发布、分发、再授权和销售软件及其副本的任何部分。MIT协议要求在软件的所有副本中包含版权声明和许可声明…