.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 以确保为您的选项使用默认值。
我举下面的例子来说明我的问题:
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 以确保为您的选项使用默认值。