.cmake 文件中无法识别的变量

Unrecognized variable in .cmake file

我举下面的例子来说明我的问题:

CMakeLists.txt

....
option(MY_TEST_VARIABLE "test" OFF)
include(my.cmake)
...

my.cmake

if(MY_TEST_VARIABLE)
  message("MY_TEST_VARIABLE is ON")
else()
  message("MY_TEST_VARIABLE is OFF")
end()

如您所见,CMakeLists.txt 将调用 my.cmake,并且两个文件共享同一个变量 MY_TEST_VARIABLE。在CMakeLists.txt中设置了MY_TEST_VARIABLE,但在my.cmake中无法识别。所以当运行 cmake时,给出如下信息:

MY_TEST_VARIABLE is ON

所以我的问题是如何让变量 MY_TEST_VARIABLE 对两个文件都可见。

MY_TEST_VARIABLE 应该在两个文件中都可见,而且很可能是。

如果您第一次使用 option(MY_TEST_VARIABLE "test" ON) 执行 cmake 或在您的构建目录中手动修改 CMakeCache.txt ,则可能会发生此问题。

如果 CMakeCache.txt 已经包含一个带有值的选项 MY_TEST_VARIABLE。它将覆盖您的调用 option(MY_TEST_VARIABLE "test" OFF)(这是预期的行为,因为如果用户没有 select 值,option 命令会提供默认值)。

检查您的变量是否尚未在 CMakeCache.txt 中设置为 ON(通过 cmake-gui 或文本编辑器)。如果您的项目不包含其他选项(或者如果您只想使用默认值),您甚至可以删除 CMakeCache.txt 以确保为您的选项使用默认值。