From 22b705d2cbe7fd12a181c6db096fb8d84b5c2240 Mon Sep 17 00:00:00 2001 From: mano-wii Date: Sat, 15 Jun 2019 15:44:47 -0300 Subject: Cmake: Add `WINDOWS_USE_VISUAL_STUDIO_SOURCE_FOLDERS` option This allows grouping files in a filter corresponding to the source files name. Differential Revision: https://developer.blender.org/D5077 --- build_files/cmake/macros.cmake | 47 +++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 17 deletions(-) (limited to 'build_files') diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 71bf7811135..4a03243af4e 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -173,23 +173,36 @@ function(blender_source_group sources ) - # Group by location on disk - source_group("Source Files" FILES CMakeLists.txt) - - foreach(_SRC ${sources}) - get_filename_component(_SRC_EXT ${_SRC} LAST_EXT) - if((${_SRC_EXT} MATCHES ".h") OR - (${_SRC_EXT} MATCHES ".hpp") OR - (${_SRC_EXT} MATCHES ".hh")) - - set(GROUP_ID "Header Files") - elseif(${_SRC_EXT} MATCHES ".glsl") - set(GROUP_ID "Shaders") - else() - set(GROUP_ID "Source Files") - endif() - source_group("${GROUP_ID}" FILES ${_SRC}) - endforeach() + #if enabled, use the sources directories as filters. + if(WINDOWS_USE_VISUAL_STUDIO_SOURCE_FOLDERS) + foreach(_SRC ${sources}) + # remove ../'s + get_filename_component(_SRC_DIR ${_SRC} REALPATH) + get_filename_component(_SRC_DIR ${_SRC_DIR} DIRECTORY) + if(${_SRC_DIR} MATCHES "${CMAKE_CURRENT_SOURCE_DIR}/") + string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" GROUP_ID ${_SRC_DIR}) + string(REPLACE "/" "\\" GROUP_ID ${GROUP_ID}) + source_group("${GROUP_ID}" FILES ${_SRC}) + endif() + endforeach() + else() + # Group by location on disk + source_group("Source Files" FILES CMakeLists.txt) + foreach(_SRC ${sources}) + get_filename_component(_SRC_EXT ${_SRC} LAST_EXT) + if((${_SRC_EXT} MATCHES ".h") OR + (${_SRC_EXT} MATCHES ".hpp") OR + (${_SRC_EXT} MATCHES ".hh")) + + set(GROUP_ID "Header Files") + elseif(${_SRC_EXT} MATCHES ".glsl") + set(GROUP_ID "Shaders") + else() + set(GROUP_ID "Source Files") + endif() + source_group("${GROUP_ID}" FILES ${_SRC}) + endforeach() + endif() endfunction() -- cgit v1.2.3