C制作多个条件的IF

问题描述 投票:0回答:2

如何制作具有多个条件的if函数?我知道 CMake 支持 if 有 2 个条件,但是如何使超过 3 个条件? 我需要这样的东西:

if(WIN32 OR APPLE OR IOS)
    set(LIBS)
endif()

谢谢

if-statement cmake conditional-statements
2个回答
0
投票

如果有人碰巧偶然发现这个问题。 CMake 接受复合条件。

但是问题中描述的特定条件语句将无法构建,它会比较 CMake 变量,而不是像下面那样引用变量的值。

if( ${WIN32} OR ${APPLE} OR ${IOS} )
        message( STATUS "this works" )
endif()

0
投票

您所写的内容 (

if(VAR_A OR VAR_B OR VAR_C)
) 应该可以正常工作。

CMake 支持

NOT
OR
AND
用于
if()
 命令条件表达式中的逻辑运算符
,并且您可以将子表达式括在
()
中以控制计算优先级/顺序。

if()

命令的
条件表达式中,大多数非操作数且不包含变量引用的未加引号字符串将被尝试解析,就好像它们是对由字符串内容命名的变量的变量引用一样。这就是为什么你没有
if(${VAR_A} OR ${VAR_B} OR ${VAR_C})
if("${VAR_A}" OR "${VAR_B}" OR "${VAR_C}")
。但无论如何我通常都会这样做,因为我认为它更清楚地传达意图(意见)。它还可以帮助防止其他棘手的混淆点,例如数字被允许作为变量名称

如果您想进一步阅读,请参阅我对何时应该引用 CMake 变量引用?.

的回答。
© www.soinside.com 2019 - 2024. All rights reserved.