Engine2026/CMakeLists.txt
Claire Schwarzer dc5654ba9a restructure v2
2026-07-08 14:24:34 +02:00

98 lines
No EOL
3.3 KiB
CMake

cmake_minimum_required(VERSION 3.15)
project(Engine2026 LANGUAGES CXX C)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# ------------------------------------------------------------------------------
# 1. Source and Header Files
# ------------------------------------------------------------------------------
set(SOURCES
main.cpp
game/game.cpp
engine/Assets/modelLoader.cpp
vendor/glad/glad.c
vendor/stb/stb_image.cpp
engine/Backend/Backend.cpp
engine/Backend/Model.cpp
)
set(HEADERS
engine/Backend/Backend.h
engine/shader.h
engine/texture.h
engine/mesh.h
engine/camera.h
game/game.h
engine/Assets/modelLoader.h
engine/Backend/Model.h
engine/Backend/Mesh.cpp
engine/Backend/Mesh.h
engine/Backend/Shader.cpp
engine/Backend/Shader.h
engine/Backend/Texture.cpp
engine/Backend/Texture.h
engine/Backend/Camera.cpp
engine/Backend/Camera.h
)
# Create the executable
add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS})
# ------------------------------------------------------------------------------
# 2. Include Directories
# ------------------------------------------------------------------------------
target_include_directories(${PROJECT_NAME} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/vendor
${CMAKE_CURRENT_SOURCE_DIR}/vendor/assimp/include
)
# ------------------------------------------------------------------------------
# 3. Dependencies & Linking
# ------------------------------------------------------------------------------
# -- OpenGL --
find_package(OpenGL REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE OpenGL::GL)
# -- GLFW (Built from source) --
# Turn off extra GLFW targets to speed up your compile times
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
# Add the GLFW source directory.
# NOTE: This automatically handles all underlying OS dependencies (gdi32, X11, Cocoa, etc.)
add_subdirectory(vendor/glfw)
# Link the GLFW target
target_link_libraries(${PROJECT_NAME} PRIVATE glfw)
# -- Assimp (Built from source) --
# Turn off extra Assimp targets to speed up compile times
set(ASSIMP_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(ASSIMP_BUILD_ASSIMP_TOOLS OFF CACHE BOOL "" FORCE)
# Add the Assimp source directory
add_subdirectory(vendor/assimp)
# Link the GLFW and Assimp targets
target_link_libraries(${PROJECT_NAME} PRIVATE glfw assimp)
# ------------------------------------------------------------------------------
# 4. Asset Synchronization (Runs Every Single Compile)
# ------------------------------------------------------------------------------
add_custom_target(refresh_assets
# Step 1: Wipe the assets folder using a static configuration path
COMMAND ${CMAKE_COMMAND} -E rm -rf "${CMAKE_CURRENT_BINARY_DIR}/assets"
# Step 2: Copy them fresh
COMMAND ${CMAKE_COMMAND} -E copy_directory
"${CMAKE_CURRENT_SOURCE_DIR}/assets"
"${CMAKE_CURRENT_BINARY_DIR}/assets"
COMMENT "Force-syncing assets to build directory..."
)
# This now safely runs BEFORE the executable compiles, without the dependency loop
add_dependencies(${PROJECT_NAME} refresh_assets)