Похоже, что CMake отбрасывает последний компонент выражения подстановки при использовании GLOB_RECURSE
для фильтрации каталогов. Вот почему CMake не фильтрует дальше каталог include
в вашем примере. Это может быть ошибка в реализации CMake GLOB_RECURSE
для каталогов или недосмотр в документации CMake .
EDIT: Решение 1 (не работает) :
Вместо этого вы можете смоделировать рекурсию, используя сам шаблон подстановки. Вместо этого используйте CMake GLOB
и используйте **
в шаблоне подстановки, чтобы сопоставить что-либо с одним или несколькими символами между deps/
и /include
:
file(GLOB
FOUND_FILES
LIST_DIRECTORIES true
${CMAKE_SOURCE_DIR}/deps/**/include
${CMAKE_BINARY_DIR}/deps/**/*.h)
)
message(STATUS "Files are ${FOUND_FILES}")
Решение 2 (уродливое):
Вы можете вручную добавить уровни каталогов для CMake для поиска include
папок:
file(GLOB
FOUND_FILES
LIST_DIRECTORIES true
${CMAKE_SOURCE_DIR}/deps/*/include
${CMAKE_SOURCE_DIR}/deps/*/*/include
...
)
Однако это не очень масштабируемое решение.