cmake_minimum_required(VERSION 3.25) project(Pong) set(CMAKE_CXX_STANDARD 17) # Option for enabling optimizations option(ENABLE_OPTIMIZATIONS "Enable compiler optimizations" OFF) # Base SDL2 find_package(SDL2 REQUIRED) include_directories(${SDL2_INCLUDE_DIRS}) # SDL2 Gfx find_library(SDL2_GFX_LIBRARY NAMES SDL2_gfx SDL2_gfxd libSDL2_gfx) if (NOT SDL2_GFX_LIBRARY) message(FATAL_ERROR "SDL2_gfx not found") endif () find_library(SDL2_TTF_LIBRARY NAMES SDL2_ttf SDL2_TTF SDL2TTF) if (NOT SDL2_TTF_LIBRARY) message(FATAL_ERROR "SDL2_TTF not found") endif () # Define the executable target before linking libraries add_executable(Pong src/main.cpp src/SdlWrapper.h src/Game.h src/VisibleObjects/Ball.h src/Vec2d/Vec2d.h src/Vec2d/Bump.h src/VisibleObjects/PlayerPaddle.h src/VisibleObjects/Side.h src/VisibleObjects/Score.h src/TextScreen.h src/defaultfont.h src/OptionScreen.h) # Now link the libraries to the target target_link_libraries(Pong ${SDL2_LIBRARIES} ${SDL2_GFX_LIBRARY} ${SDL2_TTF_LIBRARY}) # Set compiler optimization flags if(ENABLE_OPTIMIZATIONS) message(STATUS "Optimizations are enabled") if(MSVC) target_compile_options(Pong PRIVATE /O2) else() target_compile_options(Pong PRIVATE -O3) endif() endif()