如果我有CMakeLists.txt文件:
cmake_minimum_required(VERSION 2.8) OPTION(FOO "Foo Option" OFF) MESSAGE("FOO? " ${FOO})
然后我调用cmake,得到如下输出:
FOO? ON
为什么会这样?我没有指定FOO的默认值是OFF吗?
r1zk6ea11#
从构建目录中删除CMakeCache.txt并重新加载项目。发生这种情况是因为CMake正在缓存全局变量
k97glaaz2#
试试这个:
SET(FOO OFF CACHE BOOL "Foo Option")
或
SET(FOO OFF CACHE BOOL "Foo Option" FORCE)
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})
92dk7w1h4#
除了按照https://stackoverflow.com/a/56119191/895245删除整个构建目录之外,您还可以尝试使用以下命令仅取消设置一个变量:
cmake -U FOO
以确保它没有被高速缓存为非默认值。
4条答案
按热度按时间r1zk6ea11#
从构建目录中删除CMakeCache.txt并重新加载项目。发生这种情况是因为CMake正在缓存全局变量
k97glaaz2#
试试这个:
或
mu0hgdu03#
你可以打开cmake图形用户界面,它可以显示每个选项的值,build文件夹中的选项值可能与默认值不同。
重新检查你的CMakeLists.txt文件。也许你在某个地方设置了它的值。
92dk7w1h4#
除了按照https://stackoverflow.com/a/56119191/895245删除整个构建目录之外,您还可以尝试使用以下命令仅取消设置一个变量:
以确保它没有被高速缓存为非默认值。