51 lines
1.8 KiB
CMake
51 lines
1.8 KiB
CMake
cmake_minimum_required(VERSION 3.24)
|
|
project(udpscope LANGUAGES C CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
|
set(CMAKE_BUILD_TYPE Release CACHE STRING "" FORCE)
|
|
endif()
|
|
|
|
find_package(Threads REQUIRED)
|
|
|
|
# --- deps/plotter: built from the submodule, GTK4 adapter only ----------------
|
|
set(PLOT_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
|
set(PLOT_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
|
set(PLOT_BUILD_GLFW OFF CACHE BOOL "" FORCE)
|
|
set(PLOT_BUILD_IMGUI OFF CACHE BOOL "" FORCE)
|
|
set(PLOT_BUILD_QT6 OFF CACHE BOOL "" FORCE)
|
|
set(PLOT_BUILD_GTK4 ON CACHE BOOL "" FORCE)
|
|
set(PLOT_INSTALL OFF CACHE BOOL "" FORCE)
|
|
add_subdirectory(deps/plotter EXCLUDE_FROM_ALL)
|
|
|
|
# --- deps/udpsclient: vendored C99 receiver ----------------------------------
|
|
add_library(udpsclient STATIC deps/udpsclient/udps_client.c)
|
|
target_include_directories(udpsclient PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/deps/udpsclient)
|
|
set_target_properties(udpsclient PROPERTIES C_STANDARD 99 C_STANDARD_REQUIRED ON)
|
|
if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang")
|
|
target_compile_options(udpsclient PRIVATE -Wall -Wextra)
|
|
endif()
|
|
|
|
# --- the application ----------------------------------------------------------
|
|
add_executable(udpscope
|
|
src/main.cpp
|
|
src/config.cpp
|
|
src/channel.cpp
|
|
src/model.cpp
|
|
src/trigger.cpp
|
|
src/acquisition.cpp
|
|
src/plot_host.cpp
|
|
src/export.cpp
|
|
src/ui.cpp
|
|
)
|
|
|
|
target_include_directories(udpscope PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
|
|
target_link_libraries(udpscope PRIVATE plot::gtk4 udpsclient Threads::Threads)
|
|
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
|
|
target_compile_options(udpscope PRIVATE -Wall -Wextra -Wpedantic)
|
|
endif()
|