initial CMake and DESIGN

This commit is contained in:
2026-05-10 09:14:59 -07:00
parent 8ea32012fe
commit 9742dc3973
2 changed files with 204 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
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
)