CMake: Как получить имя всех подкаталогов каталога?
У меня есть два вопроса относительно CMake
-
Предположим, что у нас есть переменная ${MY_CURRENT_DIR}
которая содержит путь к каталогу, который содержит несколько подкаталогов: mydir1, mydir2 и mydir3. Я хочу обнаружить эти подкаталоги и поместить их имена в ${SUBDIRS}
(не полный путь к этим каталогам, только их имя). Как это сделать автоматически?
-
Предположим, что ${SUBDIRS}
содержит "mydir1 mydir2 mydir3". Как заменить
ADD_SUBDIRECTORY(mydir1)
ADD_SUBDIRECTORY(mydir2)
ADD_SUBDIRECTORY(mydir3)
по циклу над ${SUBDIRS}
?
Ответы
Ответ 1
-
Используйте этот макрос:
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()
Пример:
SUBDIRLIST(SUBDIRS ${MY_CURRENT_DIR})
-
Используйте foreach
:
FOREACH(subdir ${SUBDIRS})
ADD_SUBDIRECTORY(${subdir})
ENDFOREACH()