Introduce list_subdirectories (#1611)
author박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Fri, 21 Sep 2018 01:27:10 +0000 (10:27 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Fri, 21 Sep 2018 01:27:10 +0000 (10:27 +0900)
This commit extracts list_subdirectories function from
add_subdirectories, and re-implements add_subdirectories using
list_subdirectories.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
cmake/modules/add_subdirectories.cmake

index 6b08deb..06b7c76 100644 (file)
@@ -1,4 +1,4 @@
-function(add_subdirectories)
+function(list_subdirectories OUTPUT_VARIABLE)
   cmake_parse_arguments(ARG "" "" "EXCLUDES" ${ARGN})
 
   file(GLOB PROJECT_FILES
@@ -9,7 +9,19 @@ function(add_subdirectories)
     get_filename_component(PROJECT_DIR ${PROJECT_FILE} DIRECTORY)
     list(FIND ARG_EXCLUDES ${PROJECT_DIR} PROJECT_INDEX)
     if(${PROJECT_INDEX} EQUAL -1)
-      add_subdirectory(${PROJECT_DIR})
+      list(APPEND PROJECT_LIST ${PROJECT_DIR})
     endif(${PROJECT_INDEX} EQUAL -1)
   endforeach(PROJECT_FILE)
+
+  set(${OUTPUT_VARIABLE} ${PROJECT_LIST} PARENT_SCOPE)
+endfunction(list_subdirectories)
+
+function(add_subdirectories)
+  cmake_parse_arguments(ARG "" "" "EXCLUDES" ${ARGN})
+
+  list_subdirectories(PROJECT_DIRS EXCLUDES ${ARG_EXCLUDES})
+
+  foreach(PROJECT_DIR IN ITEMS ${PROJECT_DIRS})
+    add_subdirectory(${PROJECT_DIR})
+  endforeach(PROJECT_DIR)
 endfunction(add_subdirectories)