CMakeLists.txt语法规则:条件判断中表达式说明四

一. 简介

前面学习了 CMakeLists.txt语法中的 部分常用命令,常量变量,双引号的使用。

前面几篇文章也简单了解了 CMakeLists.txt语法中的条件判断,文章如下:

CMakeLists.txt语法规则:条件判断说明一-CSDN博客

CMakeLists.txt语法规则:条件判断中表达式说明一-CSDN博客

CMakeLists.txt语法规则:条件判断中表达式说明二-CSDN博客
CMakeLists.txt语法规则:条件判断中表达式说明三-CSDN博客

本文继续学习 CMakeLists.txt语法中的条件判断,主要学习 条件判断中的 表达式。

二. CMakeLists.txt语法规则:条件判断中表达式

1. DEFINED <variable>表达式

如果给定的变量已经定义,则条件判断为真,否则为假;只要变量已经被设置(定义),if 条件判断就 是真,至于变量的值是真还是假并不重要。

复制代码
#输出为:false
if(DEFINED yyds)
message(true)
else()
message(false)
endif()

#输出为:true
set(yyds "YYDS")
if(DEFINED yyds)
message(true)
else()
message(false)
endif()

2. <variable|string> LESS <variable|string>表达式

如果左边给定的字符串或变量的值是有效数字并且小于右侧的值,则为真。否则为假。
测试如下:

复制代码
#输出为:false
if(100 LESS 20)
message(true)
else()
message(false)
endif()

#输出为:true
if(20 LESS 100)
message(true)
else()
message(false)
endif()

3. <variable|string> GREATER <variable|string>表达式

如果左边给定的字符串或变量的值是有效数字并且大于右侧的值,则为真。否则为假。
测试如下:

复制代码
#输出为:false
if(20 GREATER 100)
message(true)
else()
message(false)
endif()

#输出为:true
if(100 GREATER 20)
message(true)
else()
message(false)
endif()

4. <variable|string> EQUAL <variable|string>表达式

如果左边给定的字符串或变量的值是有效数字并且等于右侧的值,则为真。否则为假。

测试如下:

复制代码
#输出为:false
if(100 EQUAL 20)
message(true)
else()
message(false)
endif()

#输出为:true
if(100 EQUAL 100)
message(true)
else()
message(false)
endif()

三. elseif 分支

可以使用 elseif 组成多个不同的分支:

复制代码
set(MY_LIST Hello World China)

if(Hello IN_LIST MY_LIST)
message(Hello)
elseif(World IN_LIST MY_LIST)
message(World)
elseif(China IN_LIST MY_LIST)
message(China)
else()
message(false)
endif()

条件判断学习到这里。

相关推荐
码界奇点30 分钟前
Linux进程间通信三System V 共享内存完全指南原理系统调用与 C 封装实现
linux·c语言·网络·c++·ux·risc-v
ZHANG13HAO1 小时前
RV1106 通过 4G 网络基于 libdatachannel 实现 WebRTC 实时视频传输”
linux
..过云雨1 小时前
13.【Linux系统编程】从ELF格式深入理解动静态库
linux·c语言·c++·后端
一名机电研究生2 小时前
华为、阿里巴巴、字节跳动 100+ Linux面试问题总结(一)
linux·华为·面试
讨厌下雨的天空2 小时前
环境变量与地址
linux
阿巴~阿巴~2 小时前
深入解析UDP服务器核心开发机制
linux·服务器·网络协议·网络编程·udp服务器·recvfrom函数
wa的一声哭了2 小时前
Linux服务器配置ssh免密登陆多台服务器、服务器别名配置
linux·运维·服务器·网络·arm开发·python·ssh
beijingliushao2 小时前
93-MongoDB-Linux
linux·数据库·mongodb
YongCheng_Liang3 小时前
openEuler 22.03 LTS 部署 ELK(Elasticsearch+Logstash+Kibana)完整教程
linux·运维·elk·elasticsearch
go_bai3 小时前
Linux-线程
linux·开发语言·c++·经验分享·笔记