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()

条件判断学习到这里。

相关推荐
好好学习啊天天向上2 分钟前
最新:ubuntu上源码安装llvm,还没有成功
linux·运维·ubuntu
Stestack31 分钟前
ssh批量机器免密操作
linux·python·ssh
jerryinwuhan39 分钟前
1231_linux_shell_1
linux
Guistar~~39 分钟前
【Linux驱动开发IMX6ULL】使用NXP MfgTool 烧写系统到eMMC
linux·运维·驱动开发
郝学胜-神的一滴1 小时前
Python抽象基类与abc模块详解:优雅设计接口的利器
开发语言·python·程序人生
啵啵啵啵哲1 小时前
【输入法】Ubuntu 22.04 终极输入法方案:Fcitx5 + 雾凇拼音 (Flatpak版)
linux·运维·ubuntu
Y unes1 小时前
《uboot基础命令记录①》
linux·驱动开发·嵌入式硬件·mcu·ubuntu·uboot
渝妳学C1 小时前
深度解析Linux中编译器gcc/g++
linux·运维
姚青&1 小时前
二.文件处理命令-文件操作
linux
陌路202 小时前
简写网络库(2)--封装socket类
linux·服务器·网络