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

.cmake文件中无法识别的变量,cmake,Cmake,我举下面的例子来说明我的问题: CMakeLists.txt .... option(MY_TEST_VARIABLE "test" OFF) include(my.cmake) ... 我的夫人 if(MY_TEST_VARIABLE) message("MY_TEST_VARIABLE is ON") else() message("MY_TEST_VARIABLE is OFF") end() 如您所见,CMakeLists.txt将调用my.cmake,并且两个文件共享相同的

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

CMakeLists.txt

....
option(MY_TEST_VARIABLE "test" OFF)
include(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\u TEST\u variable
。在CMakeLists.txt中,设置了MY_TEST_变量,但在MY.cmake中无法识别该变量。因此,当运行cmake时,将显示以下消息:

MY\u TEST\u变量开启


因此,我的问题是如何使变量
my_TEST\u variable
对两个文件都可见

MY_TEST_变量
应该在这两个文件中都可见,而且可能是可见的

如果第一次使用
选项(MY_TEST\u VARIABLE“TEST”ON)
执行cmake,或者在生成目录中手动修改CMAKECHACHE.txt,则可能会发生此问题

如果cmakcache.txt已包含带有值的选项
MY\u TEST\u变量
。它将覆盖调用
选项(MY_TEST\u变量“TEST”OFF)
(这是一种预期行为,因为如果用户未选择值,则
选项
命令将提供默认值)

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