首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake标志被计算为true,但设置为false。

CMake标志被计算为true,但设置为false。
EN

Stack Overflow用户
提问于 2022-03-17 09:48:25
回答 2查看 172关注 0票数 0

我使用的是CMake版本3.22.3,我的变量设置如下:

option(BUILD_MODULE_TEST "Option to build the module tests" OFF)

我使用参数cmake运行-D BUILD_MODULE_TEST:BOOL=OFF命令

运行带有跟踪的命令,我看到以下内容

代码语言:javascript
复制
/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发行版上观察到的所有这些错误。

EN

回答 2

Stack Overflow用户

发布于 2022-03-17 10:32:11

我在ubuntu中检查了这个CMakeLists.txt,它正常工作:

代码语言:javascript
复制
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。

票数 1
EN

Stack Overflow用户

发布于 2022-03-17 10:03:46

option()命令中的变量总是被缓存。您可以从生成目录中删除文件CMakeCache.txt和文件夹CMakeFiles,也可以在单独的生成目录中运行配置步骤。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71510182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档