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

时间:2015-02-12 15:25:32

标签: cmake

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

的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对两个文件都可见。

1 个答案:

答案 0 :(得分:2)

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

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

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

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