在CMake中,不能以函数为递归,只能使用宏
例子:递归目录下所有头文件和源文件,并将目录添加到工程中
#递归目录所有头文件 macro(custom recursion dir root dir h files cpp_files) #判断是否为目录,如果是目录设置包含目录 if (IS DIRECTORY ${root dir}) include_directories(${root_dir}) endif() #枚举目录的下所有文件或目录 file(GLOB SUBFILES ${root_dir}/*) #遄历目录和文件 foreach(sub ${SUBFILES}) #如果是目录递归读取目录文件 if (IS DIRECTORY ${sub}) custom_recursion_dir(${sub} ${h_files} ${cpp_files}) else() #判断文件后缀是否为源文件 string(FIND ${sub} ".cpp"res) if(${res} GREATER_EQUAL 0) list(APPEND ${cpp_files} ${sub}) endif() #判断文件是否为头文件 string(FIND ${sub} ".h" res) if(${res} GREATER_EQUAL O) list(APPEND ${h_files} ${sub}) endif() endif() endforeach() endmacro()
还没有评论,来说两句吧...