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

CMake OPTION默认值失效:干净构建目录下为何不生效?

问题原因与解决方案

原因

CMake的option()命令对默认值有严格限制:第三个参数必须是布尔类型值(ON/OFF,大小写不敏感)。当传入非布尔值(比如示例中的"a;b;c")时,CMake会将其判定为FALSE,变量XXX的默认值因此被自动设为OFF,这就是干净构建目录下默认值失效的核心原因。

解决方案

如果需要定义列表类型的配置变量并设置默认值,应该使用set()命令配合CACHE选项替代option()。修改后的代码如下:

cmake_minimum_required(VERSION 3.25)
project(foo)
set(XXX "a;b;c" CACHE STRING "List of things")
message(STATUS "XXX is ${XXX}")

在干净构建目录执行cmake ..后,输出会变为:

-- XXX is a;b;c

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:11:59