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()