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

CMake解析含分号(;)的JSON字符串失败,是否为Bug?

问题分析与解决方案

这不是CMake的Bug,是你忽略了CMake中分号作为列表分隔符的特性导致的操作疏漏。

在CMake中,分号;是默认的列表元素分隔符。当你直接使用${JSON2}时,CMake会把这个变量值拆分成两个列表项:"{ \"message\": \"hello" 和 "world\" }",传递给string(JSON)命令的就不再是完整的JSON字符串,自然会触发解析错误。

修复方法

在引用包含分号的变量时,用双引号将变量包裹起来,强制CMake将其作为单个完整字符串传递:

cmake_minimum_required(VERSION "3.19.0")

set(JSON1 "{ \"message\": \"hello world\" }")
set(JSON2 "{ \"message\": \"hello;world\" }")#字符串内包含';'

string(JSON message1 GET ${JSON1} "message")#执行正常
string(JSON message2 GET "${JSON2}" "message")#添加双引号包裹变量,执行正常

project("blabla")

这样${JSON2}会被当作整体传递给string(JSON)命令,JSON解析就能正常识别包含分号的字符串值了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 22:48:10