cmake变量范围,add_subdirectory

时间:2011-07-31 18:29:39

标签: scope cmake

我的项目根目录中有一个CMakeLists.txt,而我/ src文件夹中有一个。 / src文件夹中的那个只包含一个带有.cpp文件的变量(set (SOURCEFILES main.cpp foo.cpp)),而在根CMakeLists.txt中我做add_subdirectory(src),后来我做add_executable(MyApp ${SOURCEFILES})

但是cmake给了我错误

  

使用不正确的参数数量调用add_executable,没有来源   提供

如何让cmake查看变量?我读到cmake只知道全局变量,但显然情况并非如此......

1 个答案:

答案 0 :(得分:91)

set命令的文档中所述,添加了add_subdirectory的每个目录或使用function声明的每个函数都会创建一个新范围。

新的子范围从其父范围继承所有变量定义。除非使用set选项,否则使用PARENT_SCOPE命令的新子作用域中的变量赋值将仅在子作用域中可见。

要在项目的根文件夹中显示SOURCEFILES作业,请尝试:

set (SOURCEFILES main.cpp foo.cpp PARENT_SCOPE)