选项的CMAKE默认值不起作用

时间:2017-06-23 11:08:10

标签: cmake

如果我有以下行。然后我希望TEST_OPTION默认设置为ON

option( TEST_OPTION "A test option" ON)

当我测试它时,默认情况下似乎不是ON。为了测试,我正在编译一个简单的应用程序:

int main() {

  #ifdef TEST_OPTION
    #error "TEST_OPTION encountered"
  #endif 
  return 0;
}

我还有一个简单的CMakeLists.txt:

cmake_minimum_required(VERSION 2.6)
project(test)

add_executable(test main.cpp)

option( TEST_OPTION "A test option" ON)

if(TEST_OPTION)
  target_compile_definitions(test PRIVATE TEST_OPTION)
endif(TEST_OPTION)

如果我尝试使用$ cmake && cmake --build .进行编译,我希望遇到编译错误,但我没有!如果我用option( TEST_OPTION ... )替换set(TEST_OPTION ON),那么我会收到我预期的编译错误。

有人可以解释为什么option()默认情况下没有将选项设置为默认值吗?

1 个答案:

答案 0 :(得分:2)

解决方案: 更改选项的默认值时,cmake缓存似乎不会刷新。因此,首先通过选择“OFF”构建它,完全忽略“ON”选项。要解决这个问题,我只需删除生成的cmake工件并再次运行cmake