Cmake选项默认值

guz6ccqo  于 2023-01-09  发布在  其他
关注(0)|答案(4)|浏览(240)

如果我有CMakeLists.txt文件:

cmake_minimum_required(VERSION 2.8)

OPTION(FOO "Foo Option" OFF)

MESSAGE("FOO? " ${FOO})

然后我调用cmake,得到如下输出:

FOO? ON

为什么会这样?我没有指定FOO的默认值是OFF吗?

r1zk6ea1

r1zk6ea11#

从构建目录中删除CMakeCache.txt并重新加载项目。发生这种情况是因为CMake正在缓存全局变量

k97glaaz

k97glaaz2#

试试这个:

SET(FOO OFF CACHE BOOL "Foo Option")

SET(FOO OFF CACHE BOOL "Foo Option" FORCE)
mu0hgdu0

mu0hgdu03#

你可以打开cmake图形用户界面,它可以显示每个选项的值,build文件夹中的选项值可能与默认值不同。
重新检查你的CMakeLists.txt文件。也许你在某个地方设置了它的值。

cmake_minimum_required(VERSION 2.8)
OPTION(FOO "Foo Option" OFF)
SET(FOO ON)                   # Don't do this
MESSAGE("FOO? " ${FOO})
92dk7w1h

92dk7w1h4#

除了按照https://stackoverflow.com/a/56119191/895245删除整个构建目录之外,您还可以尝试使用以下命令仅取消设置一个变量:

cmake -U FOO

以确保它没有被高速缓存为非默认值。

相关问题