如果我有以下行。然后我希望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()
默认情况下没有将选项设置为默认值吗?
答案 0 :(得分:2)
解决方案:
更改选项的默认值时,cmake缓存似乎不会刷新。因此,首先通过选择“OFF”构建它,完全忽略“ON”选项。要解决这个问题,我只需删除生成的cmake工件并再次运行cmake
。