Files
MARTe-Integrated-Components/Client/streamhub-qt/CMakeLists.txt
T
2026-06-26 09:11:10 +02:00

69 lines
2.0 KiB
CMake

cmake_minimum_required(VERSION 3.16)
project(StreamHubQtClient CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# The reused, framework-free Protocol.h / Model.h structs have members named
# "signals" (e.g. ZoomResponse::signals). Qt's default "signals"/"slots"/"emit"
# keyword macros would clobber them, so disable the macros and use the
# Q_SIGNALS / Q_SLOTS / Q_EMIT spellings in our own Qt classes instead.
add_compile_definitions(QT_NO_KEYWORDS)
# ── Qt5/Qt6 autodetect (prefer Qt6, fall back to Qt5) ─────────────────────────
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets WebSockets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets WebSockets)
message(STATUS "StreamHubQtClient: building against Qt${QT_VERSION_MAJOR} "
"(${QT_VERSION})")
# ── Reuse the wire layer from the ImGui client (single source of truth) ───────
set(REF_CLIENT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../streamhub)
set(SOURCES
main.cpp
Theme.cpp
Hub.cpp
WsClient.cpp
PlotWidget.cpp
PlotGrid.cpp
SourceSidebar.cpp
TriggerBar.cpp
StatsDialog.cpp
HistoryBar.cpp
MainWindow.cpp
# Reused, framework-free protocol implementation:
${REF_CLIENT_DIR}/Protocol.cpp
)
set(HEADERS
Model.h
Theme.h
Hub.h
WsClient.h
PlotWidget.h
PlotGrid.h
SourceSidebar.h
TriggerBar.h
StatsDialog.h
HistoryBar.h
MainWindow.h
)
add_executable(StreamHubQtClient ${SOURCES} ${HEADERS})
target_include_directories(StreamHubQtClient PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${REF_CLIENT_DIR} # Protocol.h, SignalBuffer.h
)
target_link_libraries(StreamHubQtClient PRIVATE
Qt${QT_VERSION_MAJOR}::Widgets
Qt${QT_VERSION_MAJOR}::WebSockets
)
target_compile_options(StreamHubQtClient PRIVATE -Wall -Wextra -Wno-unused-parameter)
install(TARGETS StreamHubQtClient DESTINATION bin)