条件判断
基本语法
条件判断的基本语法如下:
if(<condition>)<commands>
elseif(<condition>)<commands>
else()<commands>
endif()
if(<condition>)
:检查条件是否满足。如果满足,则执行随后的命令直到遇到elseif
、else
或endif
。elseif(<condition>)
:可选。如果前面的if
或elseif
的条件不满足,将检查这里的条件。可以有多个elseif
块。else()
:可选。如果所有的if
和elseif
条件都不满足,则执行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()
逻辑判断
逻辑操作符NOT
、AND
、OR
允许你根据一个或多个条件来执行特定的代码块。这些操作符的行为与大多数编程语言中的逻辑操作符类似,非常直观。
NOT
NOT
操作符用于取反一个条件的结果。如果原条件为真(True),则NOT
后的结果为假(False)