This commit is contained in:
Ivan I. Ovchinnikov
2026-07-27 21:15:36 +03:00
commit 47b1e70663
15 changed files with 1038 additions and 0 deletions
+72
View File
@@ -0,0 +1,72 @@
cmake_minimum_required(VERSION 3.10)
project(serial_sample CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 1. FIX: Tell CMake to use modern GLVND OpenGL libraries and suppress the warning
set(OpenGL_GL_PREFERENCE GLVND)
# Define file paths for thirdparty modules
set(IMGUI_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../thirdparty/imgui)
set(IMPLOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../thirdparty/implot)
# Find Required Packages
find_package(PkgConfig REQUIRED)
find_package(OpenGL REQUIRED)
pkg_check_modules(GLFW REQUIRED glfw3)
pkg_check_modules(LIBSERIALPORT REQUIRED IMPORTED_TARGET libserialport)
# Collect core library source files
set(IMGUI_SOURCES
${IMGUI_DIR}/imgui.cpp
${IMGUI_DIR}/imgui_demo.cpp
${IMGUI_DIR}/imgui_draw.cpp
${IMGUI_DIR}/imgui_tables.cpp
${IMGUI_DIR}/imgui_widgets.cpp
${IMGUI_DIR}/backends/imgui_impl_glfw.cpp
${IMGUI_DIR}/backends/imgui_impl_opengl3.cpp
)
set(IMPLOT_SOURCES
${IMPLOT_DIR}/implot.cpp
${IMPLOT_DIR}/implot_items.cpp
${IMPLOT_DIR}/implot_demo.cpp
sources/SerialApp.cpp
include/SerialApp.h
)
add_executable(${PROJECT_NAME} main.cpp
${IMGUI_SOURCES}
${IMPLOT_SOURCES}
sources/ConnectionWindow.cpp
include/ConnectionWindow.h
sources/PayloadWindow.cpp
include/PayloadWindow.h
sources/LogWindow.cpp
include/LogWindow.h
)
# Provide Header Search Paths
target_include_directories(${PROJECT_NAME} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src
${IMGUI_DIR}
${IMGUI_DIR}/backends
${IMPLOT_DIR}
${GLFW_INCLUDE_DIRS}
${OPENGL_INCLUDE_DIR}
)
# Link Libraries
target_link_libraries(${PROJECT_NAME} PRIVATE
${GLFW_LIBRARIES}
OpenGL::GL
X11
pthread
dl
PkgConfig::LIBSERIALPORT
)
configure_file(style/dracula.theme ${CMAKE_CURRENT_BINARY_DIR}/dracula.theme COPYONLY)