ColorRace/CMakeLists.txt
2026-08-04 18:56:02 +02:00

267 lines
9.9 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

cmake_minimum_required(VERSION 4.2)
project(ColorRace)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# --- CPM.cmake Bootstrap ---
set(CPM_DOWNLOAD_VERSION 0.40.2)
set(CPM_DOWNLOAD_LOCATION "${CMAKE_BINARY_DIR}/cmake/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
if(NOT EXISTS ${CPM_DOWNLOAD_LOCATION})
file(DOWNLOAD
https://github.com/cpm-cmake/CPM.cmake/releases/download/v${CPM_DOWNLOAD_VERSION}/CPM.cmake
${CPM_DOWNLOAD_LOCATION}
)
endif()
include(${CPM_DOWNLOAD_LOCATION})
# --- OpenGL (systemseitig, kein CPM nötig) ---
find_package(OpenGL REQUIRED)
# --- GLFW ---
CPMAddPackage(
NAME glfw
GITHUB_REPOSITORY glfw/glfw
GIT_TAG 3.4
OPTIONS
"GLFW_BUILD_EXAMPLES OFF"
"GLFW_BUILD_TESTS OFF"
"GLFW_BUILD_DOCS OFF"
"GLFW_INSTALL OFF"
)
# --- GLM (header-only) ---
CPMAddPackage(
NAME glm
GITHUB_REPOSITORY g-truc/glm
GIT_TAG 1.0.1
)
# --- tinyobjloader ---
CPMAddPackage(
NAME tinyobjloader
GITHUB_REPOSITORY tinyobjloader/tinyobjloader
GIT_TAG v2.0.0rc13
)
# --- stb_image (kein CMake-Projekt, nur Header) ---
CPMAddPackage(
NAME stb
GITHUB_REPOSITORY nothings/stb
GIT_TAG master
DOWNLOAD_ONLY YES
)
add_library(stb_image STATIC third_party/stb_image_impl.cpp)
target_include_directories(stb_image PUBLIC ${stb_SOURCE_DIR})
# --- Dear ImGui (Core + GLFW/OpenGL3 Backend) ---
CPMAddPackage(
NAME imgui
GITHUB_REPOSITORY ocornut/imgui
GIT_TAG v1.91.5
DOWNLOAD_ONLY YES
)
CPMAddPackage(
NAME spdlog
GITHUB_REPOSITORY gabime/spdlog
GIT_TAG v1.15.3
)
add_library(imgui STATIC
${imgui_SOURCE_DIR}/imgui.cpp
${imgui_SOURCE_DIR}/imgui_draw.cpp
${imgui_SOURCE_DIR}/imgui_tables.cpp
${imgui_SOURCE_DIR}/imgui_widgets.cpp
${imgui_SOURCE_DIR}/imgui_demo.cpp
${imgui_SOURCE_DIR}/backends/imgui_impl_glfw.cpp
${imgui_SOURCE_DIR}/backends/imgui_impl_opengl3.cpp
)
target_include_directories(imgui PUBLIC ${imgui_SOURCE_DIR} ${imgui_SOURCE_DIR}/backends)
target_link_libraries(imgui PUBLIC glfw glad)
# --- GLAD (manuell generiert, siehe README/Hinweis unten) ---
add_library(glad STATIC third_party/glad/src/glad.c)
target_include_directories(glad PUBLIC third_party/glad/include)
# --- OpenAL-Soft ---
CPMAddPackage(
NAME openal-soft
GITHUB_REPOSITORY kcat/openal-soft
GIT_TAG 1.24.3
OPTIONS
"LIBTYPE STATIC"
"ALSOFT_UTILS OFF"
"ALSOFT_EXAMPLES OFF"
"ALSOFT_TESTS OFF"
"ALSOFT_INSTALL OFF"
)
# --- dr_libs (dr_wav.h, dr_mp3.h header-only) ---
CPMAddPackage(
NAME dr_libs
GITHUB_REPOSITORY mackron/dr_libs
GIT_TAG master
DOWNLOAD_ONLY YES
)
message(STATUS "dr_libs_SOURCE_DIR = ${dr_libs_SOURCE_DIR}")
# Engine als statische Lib
add_library(Engine STATIC
engine/src/core/Window.h
engine/src/core/Window.cpp
engine/src/core/Application.cpp
engine/src/core/Application.h
engine/src/core/EngineConfig.h
engine/src/utils/openglWrapper/GLStateCache.cpp
engine/src/utils/openglWrapper/GLStateCache.h
engine/src/utils/openglWrapper/GLRenderState.cpp
engine/src/utils/openglWrapper/GLRenderState.h
engine/src/utils/openglWrapper/openglObjects/Attribute.cpp
engine/src/utils/openglWrapper/openglObjects/Attribute.h
engine/src/utils/openglWrapper/openglObjects/Vbo.cpp
engine/src/utils/openglWrapper/openglObjects/Vbo.h
engine/src/utils/openglWrapper/openglObjects/Vao.cpp
engine/src/utils/openglWrapper/openglObjects/Vao.h
engine/src/utils/openglWrapper/shader/ShaderProgram.cpp
engine/src/utils/openglWrapper/shader/ShaderProgram.h
engine/src/renderer/primitives/SphereFactory.cpp
engine/src/renderer/primitives/SphereFactory.h
engine/src/utils/openglWrapper/shader/Uniform.cpp
engine/src/utils/openglWrapper/shader/Uniform.h
engine/src/utils/openglWrapper/shader/UniformValue.cpp
engine/src/utils/openglWrapper/shader/UniformValue.h
engine/src/layer/Scene.cpp
engine/src/layer/Scene.h
engine/src/loader/AssetLoader.cpp
engine/src/loader/AssetLoader.h
engine/src/loader/assets/AssetTypes.h
engine/src/loader/assets/AssetRequests.h
engine/src/loader/assets/AssetRequests.cpp
engine/src/loader/assets/RawAssetData.h
engine/src/loader/assets/AssetFormatters.h
engine/src/loader/textures/TextureUploader.cpp
engine/src/loader/textures/TextureUploader.h
engine/src/loader/textures/TextureImporter.cpp
engine/src/loader/textures/TextureImporter.h
engine/src/loader/textures/Texture2D.cpp
engine/src/loader/textures/Texture2D.h
engine/src/loader/models/ModelImporter.cpp
engine/src/loader/models/ModelImporter.h
engine/src/loader/models/ModelUploader.cpp
engine/src/loader/models/ModelUploader.h
engine/src/loader/models/Material.cpp
engine/src/loader/models/Material.h
engine/src/loader/assets/LoadedAssets.h
engine/src/loader/models/Model.cpp
engine/src/loader/models/Model.h
engine/src/loader/models/MeshSection.cpp
engine/src/loader/models/MeshSection.h
engine/src/loader/assets/AssetManager.cpp
engine/src/loader/assets/AssetManager.h
engine/src/renderer/entities/PointLight.cpp
engine/src/renderer/entities/PointLight.h
engine/src/core/inputsOutputs/inputs/MouseButton.h
engine/src/core/inputsOutputs/inputs/Mouse.cpp
engine/src/core/inputsOutputs/inputs/Mouse.h
engine/src/core/inputsOutputs/inputs/Keyboard.cpp
engine/src/core/inputsOutputs/inputs/Keyboard.h
engine/src/core/inputsOutputs/context/InputContextStack.cpp
engine/src/core/inputsOutputs/context/InputContextStack.h
engine/src/core/inputsOutputs/controller/CameraController.cpp
engine/src/core/inputsOutputs/controller/CameraController.h
engine/src/game/GameState.cpp
engine/src/game/GameState.h
engine/src/game/GameMode.cpp
engine/src/game/GameMode.h
engine/src/game/TurnBasedGameMode.cpp
engine/src/game/TurnBasedGameMode.h
engine/src/ecs/standardComponents/PickableComponent.h
engine/src/ecs/systems/PickingSystem.cpp
engine/src/ecs/systems/PickingSystem.h
engine/src/ui/ImGuiContext.cpp
engine/src/ui/ImGuiContext.h
engine/src/renderer/shader/BoundingDebugShader.cpp
engine/src/renderer/shader/BoundingDebugShader.h
engine/src/renderer/DebugRenderer.cpp
engine/src/renderer/DebugRenderer.h
engine/src/layer/DebugLayer.cpp
engine/src/layer/DebugLayer.h
engine/src/loader/models/AABB.cpp
engine/src/loader/models/AABB.h
engine/src/loader/models/Ray.h
engine/src/ecs/standardComponents/HighlightComponent.h
third_party/audio_impl.cpp
engine/src/core/audio/AudioDevice.cpp
engine/src/core/audio/AudioDevice.h
engine/src/core/audio/SoundBuffer.cpp
engine/src/core/audio/SoundBuffer.h
engine/src/core/audio/SoundSource.cpp
engine/src/core/audio/SoundSource.h
engine/src/loader/sounds/SoundUploader.cpp
engine/src/loader/sounds/SoundUploader.h
engine/src/core/animation/components/TransformAnimationComponent.h
engine/src/core/animation/AnimationSystem.cpp
engine/src/core/animation/AnimationSystem.h
)
target_include_directories(Engine PUBLIC engine/src ${dr_libs_SOURCE_DIR})
target_link_libraries(Engine PUBLIC OpenGL::GL glfw glad glm::glm imgui spdlog::spdlog tinyobjloader stb_image OpenAL::OpenAL)
# --- Executable ---
add_executable(ColorRace
game/src/main.cpp
game/src/ColorRaceApp.cpp
game/src/ColorRaceApp.h
engine/src/renderer/shader/StaticShader.cpp
engine/src/renderer/shader/StaticShader.h
engine/src/renderer/entities/Camera.cpp
engine/src/renderer/entities/Camera.h
engine/src/ecs/EntityRegistry.cpp
engine/src/ecs/EntityRegistry.h
engine/src/ecs/Entity.cpp
engine/src/ecs/Entity.h
engine/src/ecs/ComponentPool.cpp
engine/src/ecs/ComponentPool.h
engine/src/ecs/standardComponents/TransformComponent.h
engine/src/ecs/standardComponents/MeshComponent.h
engine/src/ecs/EntitySystem.cpp
engine/src/ecs/EntitySystem.h
engine/src/renderer/RenderSystem.cpp
engine/src/renderer/RenderSystem.h
engine/src/renderer/RenderQueue.cpp
engine/src/renderer/RenderQueue.h
engine/src/renderer/MeshRenderSystem.cpp
engine/src/renderer/MeshRenderSystem.h
engine/src/renderer/MeshRenderer.cpp
engine/src/renderer/MeshRenderer.h
engine/src/layer/Layer.cpp
engine/src/layer/Layer.h
game/src/GameLayer.cpp
game/src/GameLayer.h
engine/src/layer/SceneManager.cpp
engine/src/layer/SceneManager.h
game/src/GameScene.cpp
game/src/GameScene.h
engine/src/core/inputsOutputs/context/InputContext.cpp
engine/src/core/inputsOutputs/context/InputContext.h
game/src/ludo/LudoGameState.cpp
game/src/ludo/LudoGameState.h
game/src/ludo/LudoTypes.h
game/src/ludo/LudoGameMode.cpp
game/src/ludo/LudoGameMode.h
game/src/ludo/BoardLayout.cpp
game/src/ludo/BoardLayout.h
game/src/ludo/PiecePresenter.cpp
game/src/ludo/PiecePresenter.h
game/src/ludo/LudoAiController.cpp
game/src/ludo/LudoAiController.h
game/src/ludo/ecs/highlight/HighlightSystem.cpp
game/src/ludo/ecs/highlight/HighlightSystem.h
game/src/AudioLayer.cpp
game/src/AudioLayer.h
)
target_link_libraries(ColorRace PRIVATE
Engine
)