如何制作具有多个条件的if函数?我知道 CMake 支持 if 有 2 个条件,但是如何使超过 3 个条件? 我需要这样的东西:
if(WIN32 OR APPLE OR IOS)
set(LIBS)
endif()
谢谢
如果有人碰巧偶然发现这个问题。 CMake 接受复合条件。
但是问题中描述的特定条件语句将无法构建,它会比较 CMake 变量,而不是像下面那样引用变量的值。
if( ${WIN32} OR ${APPLE} OR ${IOS} )
message( STATUS "this works" )
endif()
您所写的内容 (
if(VAR_A OR VAR_B OR VAR_C)
) 应该可以正常工作。
NOT
、OR
和 AND
用于 if()
命令条件表达式中的逻辑运算符,并且您可以将子表达式括在
()
中以控制计算优先级/顺序。
在if()
命令的条件表达式中,大多数非操作数且不包含变量引用的未加引号字符串将被尝试解析,就好像它们是对由字符串内容命名的变量的变量引用一样。这就是为什么你没有有写
if(${VAR_A} OR ${VAR_B} OR ${VAR_C})
或if("${VAR_A}" OR "${VAR_B}" OR "${VAR_C}")
。但无论如何我通常都会这样做,因为我认为它更清楚地传达意图(意见)。它还可以帮助防止其他棘手的混淆点,例如数字被允许作为变量名称。
如果您想进一步阅读,请参阅我对何时应该引用 CMake 变量引用?.
的回答。