如果我有以下行。然后我希望TEST_OPTION被设置ON为默认。
option( TEST_OPTION "A test option" ON)
Run Code Online (Sandbox Code Playgroud)
当我测试它时,它似乎不是ON默认的。为了测试,我正在编译一个简单的应用程序:
int main() {
#ifdef TEST_OPTION
#error "TEST_OPTION encountered"
#endif
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我还有一个简单的 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)
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用 进行编译$ cmake && cmake --build .,我预计会遇到编译错误,但我没有!如果我替换option( TEST_OPTION ... )为set(TEST_OPTION ON),那么我会得到我预期的编译错误。
有人可以解释为什么option()默认情况下不将该选项设置为默认值吗?
解决方案:当您更改选项的默认值时,cmake 缓存似乎不会刷新。因此,通过首先选择“OFF”来构建它,“ON”选项被完全忽略。为了解决这个问题,我只需删除生成的 cmake 工件并cmake再次运行。
| 归档时间: |
|
| 查看次数: |
3063 次 |
| 最近记录: |