first build attempt
This commit is contained in:
107
CMakeLists.txt
Normal file
107
CMakeLists.txt
Normal file
@@ -0,0 +1,107 @@
|
||||
# MIT License
|
||||
# Author: Mark Allyn
|
||||
#
|
||||
# CMakeLists.txt — Museum Vintage Radar Exhibit
|
||||
#
|
||||
# Build:
|
||||
# cd build && cmake .. && make -j$(nproc)
|
||||
#
|
||||
# Run (from project root):
|
||||
# ./build/radar
|
||||
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(radar LANGUAGES C CXX)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
# Find packages
|
||||
# ----------------------------------------------------------------
|
||||
find_package(OpenGL REQUIRED)
|
||||
find_package(Freetype REQUIRED)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
# GLFW — prefer system package; fall back to find_library
|
||||
find_package(PkgConfig QUIET)
|
||||
if(PkgConfig_FOUND)
|
||||
pkg_check_modules(GLFW glfw3)
|
||||
endif()
|
||||
if(NOT GLFW_FOUND)
|
||||
find_library(GLFW_LIBRARIES NAMES glfw glfw3 REQUIRED)
|
||||
find_path(GLFW_INCLUDE_DIRS GLFW/glfw3.h REQUIRED)
|
||||
endif()
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
# GLAD (compiled directly from source)
|
||||
# ----------------------------------------------------------------
|
||||
set(GLAD_SRC ${CMAKE_SOURCE_DIR}/glad/src/glad.c)
|
||||
set(GLAD_INC ${CMAKE_SOURCE_DIR}/include)
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
# Source files — main radar binary
|
||||
# ----------------------------------------------------------------
|
||||
set(SOURCES
|
||||
src/main.cpp
|
||||
src/shared_render_state.cpp
|
||||
src/target_buffer.cpp
|
||||
src/phosphor.cpp
|
||||
src/graticule.cpp
|
||||
src/left_panel.cpp
|
||||
src/scope.cpp
|
||||
src/scope_manager.cpp
|
||||
src/scope_intro.cpp
|
||||
src/scope_ppi.cpp
|
||||
src/scope_marine_ppi.cpp
|
||||
src/simulator.cpp
|
||||
src/traffic_cop.cpp
|
||||
src/knob_panel.cpp
|
||||
src/rpi_receiver.cpp
|
||||
${GLAD_SRC}
|
||||
)
|
||||
|
||||
add_executable(radar ${SOURCES})
|
||||
|
||||
target_include_directories(radar PRIVATE
|
||||
src/
|
||||
${GLAD_INC}
|
||||
${FREETYPE_INCLUDE_DIRS}
|
||||
${GLFW_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
target_link_libraries(radar PRIVATE
|
||||
OpenGL::GL
|
||||
Freetype::Freetype
|
||||
Threads::Threads
|
||||
${GLFW_LIBRARIES}
|
||||
)
|
||||
|
||||
# Compiler warnings
|
||||
target_compile_options(radar PRIVATE
|
||||
-Wall -Wextra -Wpedantic
|
||||
-Wno-unused-parameter
|
||||
)
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
# terrain_preprocess — offline tool, links GDAL, NOT part of radar
|
||||
# Uncomment and install libgdal-dev to build this target.
|
||||
# ----------------------------------------------------------------
|
||||
# find_package(GDAL)
|
||||
# if(GDAL_FOUND)
|
||||
# add_executable(terrain_preprocess src/terrain_preprocess.cpp ${GLAD_SRC})
|
||||
# target_include_directories(terrain_preprocess PRIVATE src/ ${GLAD_INC} ${GDAL_INCLUDE_DIRS})
|
||||
# target_link_libraries(terrain_preprocess PRIVATE ${GDAL_LIBRARIES} Threads::Threads)
|
||||
# endif()
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
# Copy shaders and data to build directory for in-build-dir running
|
||||
# ----------------------------------------------------------------
|
||||
add_custom_target(copy_assets ALL
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${CMAKE_SOURCE_DIR}/shaders ${CMAKE_BINARY_DIR}/shaders
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${CMAKE_SOURCE_DIR}/data ${CMAKE_BINARY_DIR}/data
|
||||
COMMENT "Copying shaders and data to build directory"
|
||||
)
|
||||
add_dependencies(radar copy_assets)
|
||||
Reference in New Issue
Block a user