From 9e5fc57f665cbfd9e5437d63c7f11fe36f212878 Mon Sep 17 00:00:00 2001 From: Gliniak <153369+Gliniak@users.noreply.github.com> Date: Sat, 7 Mar 2026 20:26:45 +0100 Subject: [PATCH] [Cmake] Added directory tree to VS solution. This recreates structure from premake almost 1:1 --- cmake/XeniaHelpers.cmake | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/cmake/XeniaHelpers.cmake b/cmake/XeniaHelpers.cmake index 9530da125..2c141e64e 100644 --- a/cmake/XeniaHelpers.cmake +++ b/cmake/XeniaHelpers.cmake @@ -94,6 +94,27 @@ function(xe_target_defaults target) ) if(MSVC) target_compile_options(${target} PRIVATE /WX) + # Recreate directory structure in Visual Studio filters + get_target_property(_srcs ${target} SOURCES) + if(_srcs) + set(_local_srcs) + set(_external_srcs) + foreach(_s IN LISTS _srcs) + get_filename_component(_abs "${_s}" ABSOLUTE) + string(FIND "${_abs}" "${CMAKE_CURRENT_SOURCE_DIR}" _pos) + if(_pos EQUAL 0) + list(APPEND _local_srcs "${_s}") + else() + list(APPEND _external_srcs "${_s}") + endif() + endforeach() + if(_local_srcs) + source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${_local_srcs}) + endif() + if(_external_srcs) + source_group(TREE ${PROJECT_SOURCE_DIR} PREFIX "External" FILES ${_external_srcs}) + endif() + endif() elseif(NOT CMAKE_CXX_COMPILER_ID STREQUAL "GNU") # GCC is too noisy for -Werror; only apply to Clang target_compile_options(${target} PRIVATE -Werror) @@ -242,6 +263,7 @@ function(xe_test_suite name base_path) target_link_libraries(${name} PRIVATE ${ARG_LINKS}) endif() xe_target_defaults(${name}) + set_target_properties(${name} PROPERTIES FOLDER "tests") if(MSVC) # Disable Edit and Continue - breaks Catch2 __LINE__ usage