我的项目根目录中有一个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只知道全局变量,但显然情况并非如此......
答案 0 :(得分:91)
如set命令的文档中所述,添加了add_subdirectory
的每个目录或使用function
声明的每个函数都会创建一个新范围。
新的子范围从其父范围继承所有变量定义。除非使用set
选项,否则使用PARENT_SCOPE
命令的新子作用域中的变量赋值将仅在子作用域中可见。
要在项目的根文件夹中显示SOURCEFILES
作业,请尝试:
set (SOURCEFILES main.cpp foo.cpp PARENT_SCOPE)