protobuf server
This commit is contained in:
+35
-7
@@ -1,10 +1,9 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
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
|
||||
@@ -16,9 +15,10 @@ find_package(PkgConfig REQUIRED)
|
||||
find_package(OpenGL REQUIRED)
|
||||
pkg_check_modules(GLFW REQUIRED glfw3)
|
||||
pkg_check_modules(LIBSERIALPORT REQUIRED IMPORTED_TARGET libserialport)
|
||||
find_package(Protobuf REQUIRED)
|
||||
find_package(gRPC REQUIRED)
|
||||
|
||||
|
||||
# Collect core library source files
|
||||
# ImGUI things
|
||||
set(IMGUI_SOURCES
|
||||
${IMGUI_DIR}/imgui.cpp
|
||||
${IMGUI_DIR}/imgui_demo.cpp
|
||||
@@ -37,6 +37,34 @@ set(IMPLOT_SOURCES
|
||||
include/SerialApp.h
|
||||
)
|
||||
|
||||
set(proto_srcs "${CMAKE_CURRENT_BINARY_DIR}/service.pb.cc")
|
||||
set(proto_hdrs "${CMAKE_CURRENT_BINARY_DIR}/service.pb.h")
|
||||
set(grpc_srcs "${CMAKE_CURRENT_BINARY_DIR}/service.grpc.pb.cc")
|
||||
set(grpc_hdrs "${CMAKE_CURRENT_BINARY_DIR}/service.grpc.pb.h")
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "${proto_srcs}" "${proto_hdrs}" "${grpc_srcs}" "${grpc_hdrs}"
|
||||
COMMAND ${Protobuf_PROTOC_EXECUTABLE}
|
||||
ARGS --grpc_out="${CMAKE_CURRENT_BINARY_DIR}"
|
||||
--cpp_out="${CMAKE_CURRENT_BINARY_DIR}"
|
||||
-I "${CMAKE_CURRENT_SOURCE_DIR}/proto"
|
||||
--plugin=protoc-gen-grpc=/usr/bin/grpc_cpp_plugin
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/proto/service.proto"
|
||||
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/proto/service.proto"
|
||||
)
|
||||
|
||||
set_source_files_properties(
|
||||
"${proto_srcs}" "${proto_hdrs}" "${grpc_srcs}" "${grpc_hdrs}"
|
||||
PROPERTIES GENERATED TRUE
|
||||
)
|
||||
|
||||
add_library(proto_lib STATIC ${proto_srcs} ${grpc_srcs} proto/service.proto)
|
||||
target_link_libraries(proto_lib PUBLIC gRPC::grpc++ ${Protobuf_LIBRARIES})
|
||||
target_include_directories(proto_lib PUBLIC
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${Protobuf_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
add_executable(${PROJECT_NAME} main.cpp
|
||||
${IMGUI_SOURCES}
|
||||
${IMPLOT_SOURCES}
|
||||
@@ -48,10 +76,10 @@ add_executable(${PROJECT_NAME} main.cpp
|
||||
include/LogWindow.h
|
||||
)
|
||||
|
||||
|
||||
# Provide Header Search Paths
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${Protobuf_INCLUDE_DIRS}
|
||||
${IMGUI_DIR}
|
||||
${IMGUI_DIR}/backends
|
||||
${IMPLOT_DIR}
|
||||
@@ -59,7 +87,6 @@ target_include_directories(${PROJECT_NAME} PRIVATE
|
||||
${OPENGL_INCLUDE_DIR}
|
||||
)
|
||||
|
||||
# Link Libraries
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||
${GLFW_LIBRARIES}
|
||||
OpenGL::GL
|
||||
@@ -67,6 +94,7 @@ target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||
pthread
|
||||
dl
|
||||
PkgConfig::LIBSERIALPORT
|
||||
proto_lib
|
||||
)
|
||||
|
||||
configure_file(style/dracula.theme ${CMAKE_CURRENT_BINARY_DIR}/dracula.theme COPYONLY)
|
||||
|
||||
Reference in New Issue
Block a user