Files
portersky 90d013695d feat: add OpenGL abstraction layer with RAII resources
- Replace window class with cbt::opengl::context
- Add buffer resource (VBO, EBO, UBO, SSBO) with move semantics
- Add texture resource with format/type enums and filtering
- Add descriptor_set for Vulkan-style resource binding
- All resources use RAII with proper cleanup
2026-05-05 21:58:34 +02:00

83 lines
2.9 KiB
CMake

# ==============================================================================
# IDE Integration
# ==============================================================================
# This module configures IDE-specific settings for better project organization.
# Currently supports Visual Studio and Xcode by grouping dependency targets
# into folders for cleaner navigation in the IDE's solution/project explorer.
#
# Folder structure created:
# deps/ - Third-party libraries (fmt, glad, imgui, sqlite3, etc.)
# deps/GLFW/ - GLFW library and related targets
# deps/gtest/ - Google Test targets
# deps/tinyobj/ - tinyobjloader and its uninstall target
# ==============================================================================
# ------------------------------------------------------------------------------
# Visual Studio and Xcode Folder Organization
# ------------------------------------------------------------------------------
# Group dependency targets into logical folders for easier navigation.
# This only affects IDE project generation and has no effect on the build.
# Helper function to set folder property if target exists
function(set_target_folder target folder)
if (TARGET ${target})
set_target_properties(${target} PROPERTIES FOLDER ${folder})
endif()
endfunction()
if (CMAKE_GENERATOR MATCHES "Visual Studio" OR CMAKE_GENERATOR MATCHES "Xcode")
# General deps
# Networking / async
set_target_folder(asio deps)
# Text / parsing
set_target_folder(ctre deps)
set_target_folder(fmt deps)
set_target_folder(utf8cpp deps)
# Math / geometry
set_target_folder(earcut deps)
set_target_folder(glm deps)
# Graphics / windowing
set_target_folder(glad deps)
set_target_folder(imgui deps)
set_target_folder(imgui_backend deps)
set_target_folder(implot deps)
set_target_folder(sokol deps)
set_target_folder(stb deps)
# Audio
set_target_folder(miniaudio deps)
# Map / geo
set_target_folder(protozero deps)
set_target_folder(mvt deps)
# Data / storage
set_target_folder(sqlite3 deps)
set_target_folder(zlib deps)
set_target_folder(zlibstatic deps)
# Logging
set_target_folder(spdlog deps)
# 3D assets
set_target_folder(tinyobjloader deps/tinyobj)
# GLFW
set_target_folder(glfw deps/GLFW)
set_target_folder(update_mappings deps/GLFW)
# GTest
set_target_folder(gtest deps/gtest)
set_target_folder(gtest_main deps/gtest)
set_target_folder(gmock deps/gtest)
set_target_folder(gmock_main deps/gtest)
# Hide uninstall target
if (TARGET uninstall)
set_target_properties(uninstall PROPERTIES FOLDER deps/tinyobj)
set_target_properties(uninstall PROPERTIES EXCLUDE_FROM_ALL TRUE)
endif()
endif()