From b7518fdc2d87552d7885dd4afa0bbb948710c44f Mon Sep 17 00:00:00 2001 From: CJ Cobb Date: Mon, 14 Dec 2020 21:15:14 -0500 Subject: [PATCH] grpc two files --- CMakeLists.txt | 62 +++++++++++++++++++++++++------------------- proto/message.proto | 5 ++++ proto/message2.proto | 5 ++++ 3 files changed, 46 insertions(+), 26 deletions(-) create mode 100644 proto/message.proto create mode 100644 proto/message2.proto diff --git a/CMakeLists.txt b/CMakeLists.txt index ce8abb14d..e1fdd0699 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,38 +36,48 @@ set(_GRPC_GRPCPP grpc++) set(_GRPC_CPP_PLUGIN_EXECUTABLE $) message(${CMAKE_CURRENT_BINARY_DIR}) -# Proto file -get_filename_component(proto "message.proto" ABSOLUTE) -get_filename_component(proto_path "${proto}" PATH) - -# Generated sources -set(proto_srcs "${CMAKE_CURRENT_BINARY_DIR}/message.pb.cc") -set(proto_hdrs "${CMAKE_CURRENT_BINARY_DIR}/message.pb.h") -set(grpc_srcs "${CMAKE_CURRENT_BINARY_DIR}/message.grpc.pb.cc") -set(grpc_hdrs "${CMAKE_CURRENT_BINARY_DIR}/message.grpc.pb.h") -add_custom_command( - OUTPUT "${proto_srcs}" "${proto_hdrs}" "${grpc_srcs}" "${grpc_hdrs}" - COMMAND ${_PROTOBUF_PROTOC} - ARGS --grpc_out "${CMAKE_CURRENT_BINARY_DIR}" - --cpp_out "${CMAKE_CURRENT_BINARY_DIR}" - -I "${proto_path}" - --plugin=protoc-gen-grpc="${_GRPC_CPP_PLUGIN_EXECUTABLE}" - "${proto}" - DEPENDS "${proto}") - -# Include generated *.pb.h files -# Targets greeter_[async_](client|server) -target_sources(reporting PRIVATE message.pb.cc message.grpc.pb.cc) - - - +set (GRPC_GEN_DIR "${CMAKE_BINARY_DIR}/proto_gen_grpc") +file (MAKE_DIRECTORY ${GRPC_GEN_DIR}) +set (GRPC_PROTO_SRCS) +set (GRPC_PROTO_HDRS) +set (GRPC_PROTO_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/proto") +file(GLOB_RECURSE GRPC_DEFINITION_FILES LIST_DIRECTORIES false "${GRPC_PROTO_ROOT}/*.proto") +foreach(file ${GRPC_DEFINITION_FILES}) + get_filename_component(_abs_file ${file} ABSOLUTE) + get_filename_component(_abs_dir ${_abs_file} DIRECTORY) + get_filename_component(_basename ${file} NAME_WE) + get_filename_component(_proto_inc ${GRPC_PROTO_ROOT} DIRECTORY) # updir one level + file(RELATIVE_PATH _rel_root_file ${_proto_inc} ${_abs_file}) + get_filename_component(_rel_root_dir ${_rel_root_file} DIRECTORY) + file(RELATIVE_PATH _rel_dir ${CMAKE_CURRENT_SOURCE_DIR} ${_abs_dir}) + set (src_1 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.grpc.pb.cc") + set (src_2 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.pb.cc") + set (hdr_1 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.grpc.pb.h") + set (hdr_2 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.pb.h") + add_custom_command( + OUTPUT "${src_1}" "${src_2}" "${hdr_1}" "${hdr_2}" + COMMAND ${_PROTOBUF_PROTOC} + ARGS --grpc_out=${GRPC_GEN_DIR} + --cpp_out=${GRPC_GEN_DIR} + --plugin=protoc-gen-grpc="${_GRPC_CPP_PLUGIN_EXECUTABLE}" + -I ${_proto_inc} -I ${_rel_dir} + ${_abs_file} + DEPENDS ${_abs_file}) + set_source_files_properties(${src_1} ${src_2} ${hdr_1} ${hdr_2} PROPERTIES GENERATED TRUE) + list(APPEND GRPC_PROTO_SRCS ${src_1} ${src_2}) + list(APPEND GRPC_PROTO_HDRS ${hdr_1} ${hdr_2}) +endforeach() +add_library (grpc_pbufs STATIC ${GRPC_PROTO_SRCS} ${GRPC_PROTO_HDRS}) +#target_include_directories (grpc_pbufs PRIVATE src) +target_include_directories (grpc_pbufs SYSTEM PUBLIC ${GRPC_GEN_DIR}) +target_link_libraries (grpc_pbufs ${_REFLECTION} ${_PROTOBUF_LIBPROTOBUF} ${_GRPC_GRPCPP}) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${Boost_INCLUDE_DIR}) -TARGET_LINK_LIBRARIES(reporting LINK_PUBLIC ${Boost_LIBRARIES} ${_REFLECTION} ${_GRPC_GRPCPP} ${_PROTOBUF_LIBPROTOBUF}) +TARGET_LINK_LIBRARIES(reporting LINK_PUBLIC ${Boost_LIBRARIES} grpc_pbufs) diff --git a/proto/message.proto b/proto/message.proto new file mode 100644 index 000000000..9fa18a60d --- /dev/null +++ b/proto/message.proto @@ -0,0 +1,5 @@ +package message; + +message Message { + repeated int32 id = 1; +} diff --git a/proto/message2.proto b/proto/message2.proto new file mode 100644 index 000000000..68e94a7db --- /dev/null +++ b/proto/message2.proto @@ -0,0 +1,5 @@ +package message; + +message Message2 { + repeated int32 id = 1; +}