【发布时间】:2022-06-16 17:33:59
【问题描述】:
请更正逻辑表达式的用法
$<$<STREQUAL:${VARIANT},abc>or>$<$<STREQUAL:${VARIANT},xyz>:service::accept_service>
我正在尝试根据启用的 service::accept_service 检查变体是“abc”还是“xyz”。 组合 STREQUAL 和 OR 表达式时出现语法错误,无法计算。
【问题讨论】:
-
您向我们询问适合您目的的结构,但您似乎忘记描述目的。你想实现生成器表达式的含义是什么?
-
已更新,请检查
-
在documentation 中可以找到,OR 表达式的语法是
$<OR:cond1, cond2>。这与您的尝试...or>大不相同。要检查字符串是否等于 其中一个值,您可以找到表达式 IN_LIST 更简单:<$IN_LIST:${VARIANT},abc;xyz>。 -
我试过这个 $:service::accept_service> 出错,提示缺少别名目标。如果遗漏任何内容,请指正
-
你为什么要把操作符(
OR,STREQUAL)放在参数之间?在生成器表达式中,任何运算符都放在$<..>的开头,后跟冒号(:),并且仅在它之后列出操作数。例如。$<STREQUAL:${VARINIT},abc>将字符串与abc进行比较。如果您想在其他操作中使用一个操作的结果,则使用整个 操作作为操作数:$<OR: $<STREQUAL:${VARINIT},abc>,$<STREQUAL:${VARINIT},xyz>>.
标签: cmake