Browse Source

Visual Studio source grouping macro

JoshEngebretson 10 years ago
parent
commit
833b76fb7d

+ 27 - 0
CMake/Modules/AtomicUtils.cmake

@@ -0,0 +1,27 @@
+macro(GroupSources curdir)
+
+    if (NOT MSVC)
+        return()
+    endif()    
+
+    file(GLOB children RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/${curdir} ${CMAKE_CURRENT_SOURCE_DIR}/${curdir}/*)
+
+    foreach(child ${children})
+
+        if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${curdir}/${child})
+    
+            if ("${curdir}" STREQUAL "")
+                GroupSources(${child})
+            else()
+                GroupSources(${curdir}/${child})
+            endif()
+        else()
+        
+            string(REPLACE "/" "\\" groupname ${curdir})                       
+            source_group(${groupname} FILES ${CMAKE_CURRENT_SOURCE_DIR}/${curdir}/${child})
+        
+        endif()
+
+    endforeach()
+
+endmacro()

+ 3 - 0
CMakeLists.txt

@@ -5,6 +5,9 @@ cmake_minimum_required (VERSION 2.8)
 
 
 set (CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake/Modules)
 set (CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake/Modules)
 
 
+include(AtomicUtils)
+
+
 add_definitions(-DATOMIC_ROOT_SOURCE_DIR="${CMAKE_SOURCE_DIR}" -DATOMIC_ROOT_BUILD_DIR="${CMAKE_BINARY_DIR}")
 add_definitions(-DATOMIC_ROOT_SOURCE_DIR="${CMAKE_SOURCE_DIR}" -DATOMIC_ROOT_BUILD_DIR="${CMAKE_BINARY_DIR}")
 
 
 add_definitions( -DATOMIC_API= -DATOMIC_STATIC_DEFINE -DATOMIC_ATOMIC2D -DATOMIC_LOGGING)
 add_definitions( -DATOMIC_API= -DATOMIC_STATIC_DEFINE -DATOMIC_ATOMIC2D -DATOMIC_LOGGING)

+ 19 - 23
Source/Atomic/CMakeLists.txt

@@ -57,29 +57,6 @@ if (EMSCRIPTEN)
 
 
 endif()
 endif()
 
 
-# These are used to create visual studio folders.
-source_group(Container FILES ${CONTAINER_SOURCE})
-source_group(Core FILES ${CORE_SOURCE})
-source_group(Engine FILES ${ENGINE_SOURCE})
-source_group(Audio FILES ${AUDIO_SOURCE})
-source_group(Math FILES ${MATH_SOURCE})
-source_group(Resource FILES ${RESOURCE_SOURCE})
-source_group(Input FILES ${INPUT_SOURCE})
-source_group(IO FILES ${IO_SOURCE})
-source_group(Resource FILES ${RESOURCE_SOURCE})
-source_group(Physics FILES ${PHYSICS_SOURCE})
-source_group(IPC FILES ${IPC_SOURCE})
-source_group(Graphics FILES ${GRAPHICS_SOURCE})
-source_group(GraphicsDriver FILES ${GRAPHICS_IMPL_SOURCE})
-source_group(Atomic3D FILES ${ATOMIC3D_SOURCE})
-source_group(Atomic2D FILES ${ATOMIC2D_SOURCE})
-source_group(Environment FILES ${ENVIRONMENT_SOURCE})
-source_group(Scene FILES ${SCENE_SOURCE})
-source_group(UI FILES ${UI_SOURCE})
-source_group(Platform FILES ${PLATFORM_SOURCE})
-source_group(Network FILES $NETWORK_SOURCE})
-source_group(Navigation FILES $NAVIGATION_SOURCE})
-
 set (SOURCE_FILES ${CONTAINER_SOURCE} ${CORE_SOURCE} ${ENGINE_SOURCE} ${INPUT_SOURCE}
 set (SOURCE_FILES ${CONTAINER_SOURCE} ${CORE_SOURCE} ${ENGINE_SOURCE} ${INPUT_SOURCE}
                   ${AUDIO_SOURCE} ${IO_SOURCE} ${MATH_SOURCE}
                   ${AUDIO_SOURCE} ${IO_SOURCE} ${MATH_SOURCE}
                   ${RESOURCE_SOURCE} ${PHYSICS_SOURCE} ${IPC_SOURCE}
                   ${RESOURCE_SOURCE} ${PHYSICS_SOURCE} ${IPC_SOURCE}
@@ -93,4 +70,23 @@ if (NOT EMSCRIPTEN)
   set (SOURCE_FILES ${SOURCE_FILES} ${NETWORK_SOURCE} ${NAVIGATION_SOURCE})
   set (SOURCE_FILES ${SOURCE_FILES} ${NETWORK_SOURCE} ${NAVIGATION_SOURCE})
 endif()
 endif()
 
 
+GroupSources("Atomic2D")
+GroupSources("Atomic3D")
+GroupSources("Audio")
+GroupSources("Container")
+GroupSources("Core")
+GroupSources("Engine")
+GroupSources("Environment")
+GroupSources("Graphics")
+GroupSources("Input")
+GroupSources("IO")
+GroupSources("IPC")
+GroupSources("Math")
+GroupSources("Navigation")
+GroupSources("Network")
+GroupSources("Physics")
+GroupSources("Resource")
+GroupSources("Scene")
+GroupSources("UI")
+
 add_library(Atomic ${SOURCE_FILES})
 add_library(Atomic ${SOURCE_FILES})

+ 2 - 0
Source/AtomicEditor/CMakeLists.txt

@@ -22,6 +22,8 @@ else()
     set (SOURCE_FILES ${SOURCE_FILES} ${CMAKE_SOURCE_DIR}/CMake/Modules/Atomic.rc)
     set (SOURCE_FILES ${SOURCE_FILES} ${CMAKE_SOURCE_DIR}/CMake/Modules/Atomic.rc)
 endif(APPLE)
 endif(APPLE)
 
 
+GroupSources("Source")
+
 add_executable(AtomicEditor ${EXE_TYPE} ${SOURCE_FILES} ${ATOMIC_EDITOR_ICON})
 add_executable(AtomicEditor ${EXE_TYPE} ${SOURCE_FILES} ${ATOMIC_EDITOR_ICON})
 
 
 target_link_libraries(AtomicEditor ToolCore AtomicJS Poco nativefiledialog ${ATOMIC_LINK_LIBRARIES})
 target_link_libraries(AtomicEditor ToolCore AtomicJS Poco nativefiledialog ${ATOMIC_LINK_LIBRARIES})