【问题标题】:CMAKE logical expressions combined "STREQUAL" and "OR"CMAKE 逻辑表达式结合了“STREQUAL”和“OR”
【发布时间】: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 表达式的语法是$&lt;OR:cond1, cond2&gt;。这与您的尝试 ...or&gt; 大不相同。要检查字符串是否等于 其中一个值,您可以找到表达式 IN_LIST 更简单:&lt;$IN_LIST:${VARIANT},abc;xyz&gt;
  • 我试过这个 $:service::accept_service> 出错,提示缺少别名目标。如果遗漏任何内容,请指正
  • 你为什么要把操作符(ORSTREQUAL)放在参数之间?在生成器表达式中,任何运算符都放在$&lt;..&gt;开头,后跟冒号(:),并且仅在它之后列出操作数。例如。 $&lt;STREQUAL:${VARINIT},abc&gt; 将字符串与abc 进行比较。如果您想在其他操作中使用一个操作的结果,则使用整个 操作作为操作数$&lt;OR: $&lt;STREQUAL:${VARINIT},abc&gt;,$&lt;STREQUAL:${VARINIT},xyz&gt;&gt;.

标签: cmake


【解决方案1】:

$>:service::accept_service>

这很有效,感谢 @tsyvarev 的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多