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

如何向CMake的execute_process传递含分号的参数

解决CMake execute_process传递含分号参数的问题

核心解决方案:使用生成器表达式$<SEMICOLON>

CMake的生成器表达式会在命令执行阶段被解析,不会被当作列表分隔符拆分参数。直接在需要分号的位置替换为$<SEMICOLON>即可:

execute_process(
    COMMAND foo bar "with$<SEMICOLON>semicolon"
    RESULT_VARIABLE EXEC_RESULT
    OUTPUT_VARIABLE EXEC_OUTPUT
    ERROR_VARIABLE EXEC_ERROR
)

执行后,目标进程会收到完整参数"with;semicolon",不会被拆分成两个参数。

备选方案:变量中转(适用于复杂参数场景)

如果参数需要提前定义在变量中,可以先通过生成器表达式构造变量:

set(MY_ARG "with$<SEMICOLON>semicolon")
execute_process(
    COMMAND foo bar "${MY_ARG}"
    RESULT_VARIABLE EXEC_RESULT
)

注意必须用双引号包裹变量,确保生成器表达式被正确解析。

避坑提醒

  • 不要直接用反斜杠转义分号(\;):CMake处理列表时会忽略反斜杠,依然会把\;后的内容拆分为新参数。
  • 不要依赖引号直接包裹分号:CMake字符串解析中,引号内的分号依然会被当作列表分隔符,导致参数拆分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 22:02:26