CMake标志卡住了

Posted

技术标签:

【中文标题】CMake标志卡住了【英文标题】:CMake flag getting stuck 【发布时间】:2014-03-24 06:18:43 【问题描述】:

在给出 cmake 命令时,我使用标志“-DWITH_DAY=1”选项作为标志。 该标志在代码中可用,并且工作正常。 但是当我想使用相同的代码构建其他库但没有这个标志时,我需要删除这个标志的定义,因为在我的代码中我有类似的语句 “if(NOT DEFINED WITH_DAY)” 但是当我在没有这个标志的情况下进行 cmake 时,WITH_DAY 仍然保持定义!因此我的构建失败了。 仅当我删除 CMakeCache.txt 文件或整个构建目录时它才有效。

如果我没有在命令行中指定它,我想要被禁用。

【问题讨论】:

为什么不使用可以通过 ccmake 管理的 BOOL 变量? 【参考方案1】:

您应该在构建其他库之前运行cmake -U WITH_DAY .。这是因为 CMake 将 WITH_DAY 的值保存在缓存中 (CMakeCache.txt)。

或者,正如@Caduchon 所提到的,您可以将WITH_DAY 设为option 并将您的if 语句更改为just

if(WITH_DAY)

【讨论】:

以上是关于CMake标志卡住了的主要内容,如果未能解决你的问题,请参考以下文章

CMake:取决于构建类型的默认标志

CMake:隐藏子目标的-WShadow全局编译标志

cmake - 全局链接器标志设置(适用于目录中的所有目标)

尽管找到了 cuda,但 CMAKE_CUDA_COMPILER 标志为假

CMAKE 包配置和标志设置

使用 CMAKE 编译具有不同标志的相同文件