Cmake选项默认值

Kar*_*rus 7 cmake

如果我有一个 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 2.8)

OPTION(FOO "Foo Option" OFF)

MESSAGE("FOO? " ${FOO})
Run Code Online (Sandbox Code Playgroud)

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

FOO? ON
Run Code Online (Sandbox Code Playgroud)

为什么是这样?我不是已经指定 FOO 的默认值是 OFF 了吗?

Ash*_*FTW 7

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


Kor*_*rbi 4

尝试这个:

SET(FOO OFF CACHE BOOL "Foo Option")
Run Code Online (Sandbox Code Playgroud)

或者

SET(FOO OFF CACHE BOOL "Foo Option" FORCE)
Run Code Online (Sandbox Code Playgroud)