From 0f7c9ed5ec4d6ddca2846de28af8de649960b5de Mon Sep 17 00:00:00 2001
From: Martin Schultz <Martin.Schultz@Rwth-Aachen.de>
Date: Wed, 9 Apr 2014 21:35:45 +0200
Subject: [PATCH] * added cmake macro to group files in msvc

---
 CMakeLists.txt              | 21 +++++++++++++++++++++
 CMakeListsStaticInclude.txt |  3 +++
 2 files changed, 24 insertions(+)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index a368785b..f378c504 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,6 +5,27 @@
 #
 CMAKE_MINIMUM_REQUIRED (VERSION 2.6) 
 
+################################################################################
+# Macro to sort acgl into directories
+################################################################################
+
+MACRO (RECURSE_GROUPS dirname)
+    FILE(GLOB_RECURSE allfiles "${dirname}/*.*")
+    SET(ALL_FILES ${ALL_FILES} ${allfiles})
+    STRING(REGEX REPLACE ".*/([^/]*)" "\\1" maindir "${dirname}")
+
+    FOREACH(file ${allfiles})
+        STRING(REGEX REPLACE "${dirname}/(.*)/[^/]*" "\\1" loopdirname "${file}")
+        STRING(REGEX REPLACE "/" "\\\\" loopdirname "${loopdirname}")
+
+        IF(NOT "${file}" MATCHES "${dirname}/(.*)/[^/]*")
+            source_group("${maindir}" FILES  ${file})
+        ELSE()
+            source_group("${maindir}\\${loopdirname}" FILES  ${file})
+        ENDIF()
+    ENDFOREACH()
+ENDMACRO (RECURSE_GROUPS)
+
 ################################################################################
 # Global Settings
 ################################################################################
diff --git a/CMakeListsStaticInclude.txt b/CMakeListsStaticInclude.txt
index 64025264..4a4fd580 100644
--- a/CMakeListsStaticInclude.txt
+++ b/CMakeListsStaticInclude.txt
@@ -12,6 +12,9 @@ FILE(GLOB_RECURSE SOURCE_FILES_CPP "${ACGL_BASE_DIR}/src/*.cpp")
 FILE(GLOB_RECURSE HEADER_FILES_H   "${ACGL_BASE_DIR}/include/*.h")
 FILE(GLOB_RECURSE HEADER_FILES_HH  "${ACGL_BASE_DIR}/include/*.hh")
 FILE(GLOB_RECURSE HEADER_FILES_HPP "${ACGL_BASE_DIR}/include/*.hpp")
+#group files in msvc
+RECURSE_GROUPS ("${ACGL_BASE_DIR}/include")
+RECURSE_GROUPS ("${ACGL_BASE_DIR}/src")
 
 SET(HEADER_FILES ${HEADER_FILES} ${HEADER_FILES_H} ${HEADER_FILES_HH} ${HEADER_FILES_HPP})
 SET(SOURCE_FILES ${SOURCE_FILES} ${SOURCE_FILES_C} ${SOURCE_FILES_CC} ${SOURCE_FILES_CPP})
-- 
GitLab