条件判断
基本语法
条件判断的基本语法如下:
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)