cmake_minimum_required(VERSION 3.20) project(new-radar LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) # Output binaries to build/bin set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) # ── Find system packages ────────────────────────────────────────────────────── find_package(OpenGL REQUIRED) find_package(glfw3 REQUIRED) find_package(Freetype REQUIRED) find_package(GDAL REQUIRED) # PostgreSQL (libpq) find_package(PostgreSQL REQUIRED) # ── GLAD (bundled) ──────────────────────────────────────────────────────────── add_library(glad STATIC glad/src/glad.c) target_include_directories(glad PUBLIC ${CMAKE_SOURCE_DIR}/include) # ── Collect sources ─────────────────────────────────────────────────────────── file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS src/*.cpp) # ── Main executable ─────────────────────────────────────────────────────────── add_executable(radar ${SOURCES}) target_include_directories(radar PRIVATE ${CMAKE_SOURCE_DIR}/include ${FREETYPE_INCLUDE_DIRS} ${GDAL_INCLUDE_DIRS} ${PostgreSQL_INCLUDE_DIRS} ) target_link_libraries(radar PRIVATE glad OpenGL::GL glfw Freetype::Freetype ${GDAL_LIBRARIES} ${PostgreSQL_LIBRARIES} pthread ) # ── Compiler flags ──────────────────────────────────────────────────────────── target_compile_options(radar PRIVATE -Wall -Wextra -Wpedantic $<$:-g -O0> $<$:-O2> ) # AMD Radeon 780M uses Mesa; no vendor-specific extensions target_compile_definitions(radar PRIVATE GL_GLEXT_PROTOTYPES )