CMake: ¿cómo obtener el nombre de todos los subdirectorios de un directorio?

Tengo dos preguntas relativas a CMake

1) Supongamos que tenemos una variable ${MY_CURRENT_DIR} que contiene la ruta de un directorio que contiene varios subdirectorios: mydir1, mydir2 y mydir3. Quiero detectar estos subdirectorios y poner sus nombres en ${SUBDIRS} (no la ruta completa de estos directorios, solo su nombre). ¿Cómo hacer eso automáticamente?

2) Suponga que ${SUBDIRS} contiene “mydir1 mydir2 mydir3”. Cómo reemplazar

 ADD_SUBDIRECTORY(mydir1) ADD_SUBDIRECTORY(mydir2) ADD_SUBDIRECTORY(mydir3) 

por un bucle de ${SUBDIRS} ?

Muchas gracias.

1) Usa esta macro:

 MACRO(SUBDIRLIST result curdir) FILE(GLOB children RELATIVE ${curdir} ${curdir}/*) SET(dirlist "") FOREACH(child ${children}) IF(IS_DIRECTORY ${curdir}/${child}) LIST(APPEND dirlist ${child}) ENDIF() ENDFOREACH() SET(${result} ${dirlist}) ENDMACRO() 

Ejemplo:

 SUBDIRLIST(SUBDIRS ${MY_CURRENT_DIR}) 

2) Utilice foreach :

 FOREACH(subdir ${SUBDIRS}) ADD_SUBDIRECTORY(${subdir}) ENDFOREACH()