cmake_minimum_required(VERSION 3.20) # Integrate vcpkg toolchain if available if(DEFINED ENV{VCPKG_ROOT}) set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "") elseif(EXISTS "${CMAKE_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake") set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake" CACHE STRING "") elseif(EXISTS "C:/Users/Gregor Klevže/vcpkg/scripts/buildsystems/vcpkg.cmake") set(CMAKE_TOOLCHAIN_FILE "C:/Users/Gregor Klevže/vcpkg/scripts/buildsystems/vcpkg.cmake" CACHE STRING "") endif() project(tetris_sdl3 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) # Find SDL3 (via package manager or a local build) # vcpkg example: vcpkg install sdl3 # Homebrew: brew install sdl3 find_package(SDL3 CONFIG REQUIRED) find_package(SDL3_ttf CONFIG REQUIRED) add_executable(tetris src/main.cpp src/Game.cpp src/Scores.cpp src/Starfield.cpp src/Starfield3D.cpp src/Font.cpp src/Audio.cpp src/LineEffect.cpp src/SoundEffect.cpp # State implementations (new) src/states/LoadingState.cpp src/states/MenuState.cpp src/states/PlayingState.cpp ) if (WIN32) # Embed the application icon into the executable set_source_files_properties(src/app_icon.rc PROPERTIES LANGUAGE RC) target_sources(tetris PRIVATE src/app_icon.rc) endif() if (WIN32) # Ensure favicon.ico is available in the build directory for the resource compiler set(FAVICON_SRC "${CMAKE_SOURCE_DIR}/assets/favicon/favicon.ico") set(FAVICON_DEST "${CMAKE_BINARY_DIR}/favicon.ico") if(EXISTS ${FAVICON_SRC}) add_custom_command( OUTPUT ${FAVICON_DEST} COMMAND ${CMAKE_COMMAND} -E copy_if_different ${FAVICON_SRC} ${FAVICON_DEST} DEPENDS ${FAVICON_SRC} COMMENT "Copy favicon.ico to build dir for resource compilation" ) add_custom_target(copy_favicon ALL DEPENDS ${FAVICON_DEST}) add_dependencies(tetris copy_favicon) else() message(WARNING "Favicon not found at ${FAVICON_SRC}; app icon may not compile") endif() # Also copy favicon into the runtime output folder (same dir as exe) add_custom_command(TARGET tetris POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${FAVICON_SRC} $/favicon.ico COMMENT "Copy favicon.ico next to executable" ) endif() target_link_libraries(tetris PRIVATE SDL3::SDL3 SDL3_ttf::SDL3_ttf) if (WIN32) target_link_libraries(tetris PRIVATE mfplat mfreadwrite mfuuid) endif() # Include production build configuration include(cmake/ProductionBuild.cmake)