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

如何在CMake 3.25中格式化带单个换行的错误信息?

CMake 3.25 格式化FATAL_ERROR输出的正确方法

要输出你需要的无空行、格式规整的错误信息,有两种可靠的解决方式:

方法一:单行字符串显式指定换行符

直接在双引号包裹的字符串中用\n定义换行,同时手动添加缩进空格:

message(FATAL_ERROR "Error message. Possible reasons:\n    - reason 1\n    - reason 2")

方法二:用string(JOIN)拼接多行内容

如果需要代码保持多行结构以提升可读性,可通过string(JOIN)将各行用单个换行符连接后输出:

string(JOIN "\n" ERROR_MSG
    "Error message. Possible reasons:"
    "    - reason 1"
    "    - reason 2"
)
message(FATAL_ERROR "${ERROR_MSG}")

问题根源

你之前遇到的换行重复、空行问题,是因为CMake的message(FATAL_ERROR)处理双引号包裹的多行代码字符串时,会把代码中手动敲回车产生的原始换行,和命令输出时自动添加的换行叠加,导致每行之间多出一个空行。而上述两种方法都是通过明确控制换行符的数量,避免了叠加问题。

另外你尝试的原始字符串语法[=[...]=]会完全保留所有原始字符(包括代码中的换行),因此同样会触发重复换行的问题,不适合此场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 15:34:53