function(setup_msvc_grouping) get_property(FG_GROUPS_C GLOBAL PROPERTY FG_GROUPS_C) string(REPLACE "@" ";" groups ${FG_GROUPS_C} ) foreach(g ${groups}) string(REPLACE "#" ";" g2 ${g}) list(GET g2 0 name) list(REMOVE_AT g2 0) source_group("${name}\\Sources" FILES ${g2}) endforeach() get_property(FG_GROUPS_H GLOBAL PROPERTY FG_GROUPS_H) string(REPLACE "@" ";" groups ${FG_GROUPS_H} ) foreach(g ${groups}) string(REPLACE "#" ";" g2 ${g}) list(GET g2 0 name) list(REMOVE_AT g2 0) source_group("${name}\\Headers" FILES ${g2}) endforeach() endfunction()