#需要过滤的目录
set(filtration_dirlist "build")
macro(SUBDIRLISTINCLUDE result curdir)
FILE(GLOB_RECURSE children LIST_DIRECTORIES true RELATIVE ${curdir} "${curdir}/*")
#message(DEBUG "\n children: ${children}")
set(dirlist "")
foreach(child ${children})
if((IS_DIRECTORY ${curdir}/${child}))
set(flags 0)
foreach(filtration_dir ${filtration_dirlist}) #过滤目录
string(FIND ${child} ${filtration_dir} index)
if(${index} GREATER_EQUAL 0)
set(flags 1)
endif()
endforeach()
if(${flags} EQUAL 0)
LIST(APPEND dirlist ${child})
endif()
endif()
endforeach()
set(${result} ${dirlist})
endmacro()
调用方法:
SUBDIRLISTINCLUDE(subdir ${PROJECT_SOURCE_DIR}) #获取目录名
message(DEBUG "\n directory name: ${subdir}")