diff --git a/CMakeLists.txt b/CMakeLists.txt index 808dedda2..f6382ed97 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -343,7 +343,15 @@ function(NGL_ADD_SUBDIR_GUARDED subdir) # also compare basenames so MIGRATE_MODULE=Lts/DDS matches subdir 'DDS' when called from Lts get_filename_component(_mig_base "${_mig}" NAME) get_filename_component(_sub_base "${_sub}" NAME) - if(_mig MATCHES "^${_sub}(/|$)" OR _sub MATCHES "^${_mig}(/|$)" OR _mig_base STREQUAL _sub OR _sub_base STREQUAL _mig) + # If MIGRATE_MODULE either starts with the subdir, equals it, contains it as a path component, + # or the basename matches, include the subdir. This makes nested paths like + # 'Lts/Proxies/TrainingAreaBase' include both 'Lts' and its child 'Proxies'. + if(_mig MATCHES "^${_sub}(/|$)" \ + OR _sub MATCHES "^${_mig}(/|$)" \ + OR _mig MATCHES ".*/${_sub}(/|$)" \ + OR _sub MATCHES ".*/${_mig}(/|$)" \ + OR _mig_base STREQUAL _sub \ + OR _sub_base STREQUAL _mig) message(STATUS "Including subdir ${subdir} because MIGRATE_MODULE=${MIGRATE_MODULE}") add_subdirectory(${subdir}) else()