| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- # Protocol Buffers and gRPC service definitions
- # Get protobuf and gRPC plugin locations
- set(_PROTOBUF_PROTOC $<TARGET_FILE:protobuf::protoc>)
- set(_GRPC_CPP_PLUGIN_EXECUTABLE $<TARGET_FILE:grpc_cpp_plugin>)
- # Proto files directory
- set(PROTO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/proto)
- # Generated files directory
- set(PROTO_GEN_DIR ${CMAKE_CURRENT_BINARY_DIR}/generated)
- file(MAKE_DIRECTORY ${PROTO_GEN_DIR})
- # Proto source files
- set(PROTO_FILES
- ${PROTO_DIR}/crm.proto
- ${PROTO_DIR}/database.proto
- )
- # Generate C++ sources from proto files
- set(PROTO_SRCS)
- set(PROTO_HDRS)
- set(GRPC_SRCS)
- set(GRPC_HDRS)
- foreach(PROTO_FILE ${PROTO_FILES})
- get_filename_component(PROTO_NAME ${PROTO_FILE} NAME_WE)
- list(APPEND PROTO_SRCS "${PROTO_GEN_DIR}/${PROTO_NAME}.pb.cc")
- list(APPEND PROTO_HDRS "${PROTO_GEN_DIR}/${PROTO_NAME}.pb.h")
- list(APPEND GRPC_SRCS "${PROTO_GEN_DIR}/${PROTO_NAME}.grpc.pb.cc")
- list(APPEND GRPC_HDRS "${PROTO_GEN_DIR}/${PROTO_NAME}.grpc.pb.h")
- add_custom_command(
- OUTPUT
- "${PROTO_GEN_DIR}/${PROTO_NAME}.pb.cc"
- "${PROTO_GEN_DIR}/${PROTO_NAME}.pb.h"
- "${PROTO_GEN_DIR}/${PROTO_NAME}.grpc.pb.cc"
- "${PROTO_GEN_DIR}/${PROTO_NAME}.grpc.pb.h"
- COMMAND ${_PROTOBUF_PROTOC}
- --cpp_out=${PROTO_GEN_DIR}
- --grpc_out=${PROTO_GEN_DIR}
- --plugin=protoc-gen-grpc=${_GRPC_CPP_PLUGIN_EXECUTABLE}
- -I${PROTO_DIR}
- ${PROTO_FILE}
- DEPENDS ${PROTO_FILE}
- COMMENT "Generating protobuf/gRPC sources for ${PROTO_NAME}"
- )
- endforeach()
- # Proto library
- add_library(smartbotic_proto STATIC
- ${PROTO_SRCS}
- ${GRPC_SRCS}
- )
- target_include_directories(smartbotic_proto
- PUBLIC
- ${PROTO_GEN_DIR}
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
- )
- target_link_libraries(smartbotic_proto
- PUBLIC
- grpc++
- grpc++_reflection
- libprotobuf
- )
- add_library(smartbotic::proto ALIAS smartbotic_proto)
|