60 lines
2.2 KiB
CMake
60 lines
2.2 KiB
CMake
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
|
|
$<$<CONFIG:Debug>:-g -O0>
|
|
$<$<CONFIG:Release>:-O2>
|
|
)
|
|
|
|
# AMD Radeon 780M uses Mesa; no vendor-specific extensions
|
|
target_compile_definitions(radar PRIVATE
|
|
GL_GLEXT_PROTOTYPES
|
|
)
|