cmakevariables作用域,add_subdirectory

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

但cmake给我的错误

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

如何获得cmake来查看variables? 我读了cmake只知道全局variables,但显然不是这样的…

正如在set命令的文档中提到的,每个添加了add_subdirectory目录或者每个使用function声明的function都会创build一个新的作用域。

新的子作用域inheritance其父作用域中的所有variables定义。 只有在使用PARENT_SCOPE选项的情况下,使用set命令才能在子作用域中显示新子作用域中的variables赋值。

要使SOURCEFILES分配在项目的根文件夹中可见,请尝试:

 set (SOURCEFILES main.cpp foo.cpp PARENT_SCOPE)