Files
letnik3koncni-prap/CMakeLists.txt
2026-03-15 19:22:20 +01:00

86 lines
2.3 KiB
CMake

cmake_minimum_required(VERSION 3.16)
project(Letnik3Zadnja)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Compile flags
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Werror -Wno-unused-parameter -O2")
# Collect all source files from src/ and nested directories
file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS "src/*.cpp")
# Create the executable
add_executable(${PROJECT_NAME} ${SOURCES})
# Include headers from include/
target_include_directories(${PROJECT_NAME} PRIVATE include)
# ------------------------------------------------------------
# Platform-specific dependency handling
# ------------------------------------------------------------
if(WIN32)
# Include FetchContent to download SDL libraries
include(FetchContent)
# Download SDL3
FetchContent_Declare(
SDL3
GIT_REPOSITORY https://github.com/libsdl-org/SDL.git
GIT_TAG release-3.4.2
)
# Download SDL3_image
FetchContent_Declare(
SDL3_image
GIT_REPOSITORY https://github.com/libsdl-org/SDL_image.git
GIT_TAG release-3.2.4
)
# Download SDL3_ttf
FetchContent_Declare(
SDL3_ttf
GIT_REPOSITORY https://github.com/libsdl-org/SDL_ttf.git
GIT_TAG release-3.2.2
)
# Download SDL3_mixer
FetchContent_Declare(
SDL3_mixer
GIT_REPOSITORY https://github.com/libsdl-org/SDL_mixer.git
GIT_TAG release-3.2.0
)
# Disable PipeWire backend (Linux-only but harmless here)
set(SDL_PIPEWIRE OFF CACHE BOOL "Disable SDL PipeWire backend" FORCE)
set(SDL_PIPEWIRE_SHARED OFF CACHE BOOL "Disable dynamic PipeWire loading in SDL" FORCE)
# Make SDL libraries available
FetchContent_MakeAvailable(SDL3)
FetchContent_MakeAvailable(SDL3_image)
FetchContent_MakeAvailable(SDL3_ttf)
FetchContent_MakeAvailable(SDL3_mixer)
else()
# macOS / Linux → use system-installed packages
find_package(SDL3 REQUIRED)
find_package(SDL3_image REQUIRED)
find_package(SDL3_ttf REQUIRED)
find_package(SDL3_mixer REQUIRED)
endif()
# ------------------------------------------------------------
# Link SDL libraries
# ------------------------------------------------------------
target_link_libraries(${PROJECT_NAME}
PRIVATE
SDL3::SDL3
SDL3_image::SDL3_image
SDL3_ttf::SDL3_ttf
SDL3_mixer::SDL3_mixer
)