我使用的是CMake版本3.22.3,我的变量设置如下:
option(BUILD_MODULE_TEST "Option to build the module tests" OFF)
我使用参数cmake运行-D BUILD_MODULE_TEST:BOOL=OFF命令
运行带有跟踪的命令,我看到以下内容
/root/.jenkins/workspace/Daily-build/CMakeLists.txt(42): message(MT FLAG:
${BUILD_MODULE_TEST} )
MT FLAG: OFF;BOOL;Option to build module tests
/root/.jenkins/workspace/Daily-build/CMakeLists.txt(43): if(BUILD_MODULE_TEST )
/root/.jenkins/workspace/Daily-build/CMakeLists.txt(44): message(Building for MT )为什么BUILD_MODULE_TEST变量被计算为true?
请注意,变量以前被设置为缓存。我试图在CMakeLists.txt中的任何地方取消变量,但没有任何效果。在运行cmake时,我总是通过它删除生成的文件,这样就不会有任何剩馀文件。
在WSL Ubuntu发行版上观察到的所有这些错误。
发布于 2022-03-17 10:32:11
我在ubuntu中检查了这个CMakeLists.txt,它正常工作:
cmake_minimum_required(VERSION 3.14)
project(test)
option(BUILD_MODULE_TEST "Option to build the module tests" OFF)
message(MT FLAG: ${BUILD_MODULE_TEST})
if (BUILD_MODULE_TEST)
message(XXX)
endif()不过,我的CMake版本是3.16.3。
发布于 2022-03-17 10:03:46
option()命令中的变量总是被缓存。您可以从生成目录中删除文件CMakeCache.txt和文件夹CMakeFiles,也可以在单独的生成目录中运行配置步骤。
https://stackoverflow.com/questions/71510182
复制相似问题