From 00eccbe298ad7f7d656e121ce58c2a6326dabe2f Mon Sep 17 00:00:00 2001 From: Michael Lutz Date: Sun, 5 Jul 2020 14:39:39 +0200 Subject: [PATCH] Add: [CMake] Source group definitions to create file filters in generated project files (like the old MSVC projects). --- CMakeLists.txt | 2 ++ cmake/MSVCFilters.cmake | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 cmake/MSVCFilters.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 364236c86c..1400179ffa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -131,6 +131,8 @@ include_directories(${CMAKE_SOURCE_DIR}/src) # Needed by everything that uses Squirrel include_directories(${CMAKE_SOURCE_DIR}/src/3rdparty/squirrel/include) +include(MSVCFilters) + include(CompileFlags) compile_flags() diff --git a/cmake/MSVCFilters.cmake b/cmake/MSVCFilters.cmake new file mode 100644 index 0000000000..14c7b2c351 --- /dev/null +++ b/cmake/MSVCFilters.cmake @@ -0,0 +1,37 @@ +# Add source group filters for use in generated projects. + +source_group("AI Core" REGULAR_EXPRESSION "src/ai/") +source_group("Blitters" REGULAR_EXPRESSION "src/blitter/") +source_group("Core Source Code" REGULAR_EXPRESSION "src/core/") +source_group("Game Core" REGULAR_EXPRESSION "src/game/") +source_group("MD5" REGULAR_EXPRESSION "src/3rdparty/md5/") +source_group("Misc" REGULAR_EXPRESSION "src/misc/") +source_group("Music" REGULAR_EXPRESSION "src/music/") +source_group("Network Core" REGULAR_EXPRESSION "src/network/core/") +source_group("Pathfinder" REGULAR_EXPRESSION "src/pathfinder/") +source_group("Save/Load handlers" REGULAR_EXPRESSION "src/saveload/") +source_group("Sound" REGULAR_EXPRESSION "src/sound/") +source_group("Sprite loaders" REGULAR_EXPRESSION "src/spriteloader/") +source_group("Squirrel" REGULAR_EXPRESSION "src/3rdparty/squirrel/squirrel/") +source_group("Tables" REGULAR_EXPRESSION "src/table/") +source_group("Video" REGULAR_EXPRESSION "src/video/") +source_group("Widgets" REGULAR_EXPRESSION "src/widgets/") +source_group("Windows files" REGULAR_EXPRESSION "src/os/windows/|\.rc$") + +# Last directive for each file wins, so make sure NPF/YAPF are after the generic pathfinder filter. +source_group("NPF" REGULAR_EXPRESSION "src/pathfinder/npf/") +source_group("YAPF" REGULAR_EXPRESSION "src/pathfinder/yapf/") + +source_group("Script" REGULAR_EXPRESSION "src/script/") +source_group("Script API Implementation" REGULAR_EXPRESSION "src/script/api/") +source_group("Script API" REGULAR_EXPRESSION "src/script/api/.*\.hpp$") +source_group("AI API" REGULAR_EXPRESSION "src/script/api/ai_") +source_group("Game API" REGULAR_EXPRESSION "src/script/api/game_") + +# Placed last to ensure any of the previous directory filters are overridden. +source_group("Command handlers" REGULAR_EXPRESSION "_cmd\.cpp$") +source_group("Drivers" REGULAR_EXPRESSION "_driver\.hpp$") +source_group("GUI Source Code" REGULAR_EXPRESSION "_gui\.cpp$") +source_group("Map Accessors" REGULAR_EXPRESSION "_map\.(cpp|h)$") +source_group("NewGRF" REGULAR_EXPRESSION "newgrf.*cpp$") +source_group("Squirrel headers" REGULAR_EXPRESSION "src/3rdparty/squirrel/squirrel/.*\.h$")