diff options
Diffstat (limited to 'src/teakra/CMakeModules')
-rw-r--r-- | src/teakra/CMakeModules/CreateDirectoryGroups.cmake | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/teakra/CMakeModules/CreateDirectoryGroups.cmake b/src/teakra/CMakeModules/CreateDirectoryGroups.cmake new file mode 100644 index 0000000..175899e --- /dev/null +++ b/src/teakra/CMakeModules/CreateDirectoryGroups.cmake @@ -0,0 +1,17 @@ +# This function should be passed a name of an existing target. It will automatically generate +# file groups following the directory hierarchy, so that the layout of the files in IDEs matches the +# one in the filesystem. +function(create_target_directory_groups target_name) + # Place any files that aren't in the source list in a separate group so that they don't get in + # the way. + source_group("Other Files" REGULAR_EXPRESSION ".") + + get_target_property(target_sources "${target_name}" SOURCES) + + foreach(file_name IN LISTS target_sources) + get_filename_component(dir_name "${file_name}" PATH) + # Group names use '\' as a separator even though the entire rest of CMake uses '/'... + string(REPLACE "/" "\\" group_name "${dir_name}") + source_group("${group_name}" FILES "${file_name}") + endforeach() +endfunction() |