You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake多层生成器表达式中‘current context’具体指什么?

关于CMake中$<GENEX_EVAL:expr>的“current context”含义解释

在CMake的多层生成器表达式评估中,current context(当前上下文)指的是触发GENEX_EVAL解析时所处的具体评估环境与范围,可以从三个核心维度理解:

  • 评估阶段上下文:CMake生成器表达式的解析分为配置阶段、生成阶段等不同阶段。current context就是GENEX_EVAL被执行时所处的那个阶段。比如在add_executable的目标属性中使用GENEX_EVAL,expr就会在生成目标构建规则的阶段被评估,而非更早的配置阶段。

  • 目标绑定上下文:如果GENEX_EVAL是在某个特定目标的属性(如TARGET_COMPILE_DEFINITIONS、TARGET_LINK_LIBRARIES)中定义的,current context就绑定到这个目标上。expr中涉及的目标相关生成器表达式(比如$<TARGET_PROPERTY:..., ...>)会以该目标为基准解析,而非全局或其他无关目标。

  • 条件分支上下文:当GENEX_EVAL嵌套在条件类生成器表达式(如$<IF:..., ..., ...>、$<BOOL:...>)中时,current context就是当前生效的条件分支环境。比如条件为真时,expr会在true分支的上下文里评估,继承该分支的变量状态、条件判定结果等。

CMake手册中对此的描述为:

expr的内容会在当前上下文作为生成器表达式进行评估。

内容的提问来源于stack exchange,提问作者Dess

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 20:25:03