CMakeLists.txt 1.2 KB

123456789101112131415161718192021222324252627
  1. if(NOT DEFINED gRPC_CPP_PLUGIN_EXECUTABLE)
  2. message(FATAL_ERROR "gRPC plugin is not found set full path to grpc_cpp_plugin using -DgRPC_CPP_PLUGIN_EXECUTABLE=</path/to/grpc_cpp_plugin>")
  3. endif()
  4. file(GLOB PROTO_FILES ABSOLUTE ${CMAKE_CURRENT_SOURCE_DIR}/../proto/*.proto)
  5. add_custom_target(echoserver_src_generation)
  6. add_custom_command(
  7. TARGET echoserver_src_generation
  8. COMMAND ${Protobuf_PROTOC_EXECUTABLE}
  9. ARGS --grpc_out "${CMAKE_CURRENT_BINARY_DIR}"
  10. --cpp_out "${CMAKE_CURRENT_BINARY_DIR}"
  11. -I="${CMAKE_CURRENT_SOURCE_DIR}/../proto/"
  12. --plugin=protoc-gen-grpc="${gRPC_CPP_PLUGIN_EXECUTABLE}"
  13. ${PROTO_FILES}
  14. DEPENDS ${PROTO_FILES})
  15. set(GENERATED_SOURCES
  16. "${CMAKE_CURRENT_BINARY_DIR}/simpletest.grpc.pb.cc"
  17. "${CMAKE_CURRENT_BINARY_DIR}/simpletest.pb.cc"
  18. "${CMAKE_CURRENT_BINARY_DIR}/testservice.grpc.pb.cc"
  19. "${CMAKE_CURRENT_BINARY_DIR}/testservice.pb.cc")
  20. set_source_files_properties(${GENERATED_SOURCES} PROPERTIES GENERATED TRUE)
  21. add_executable(echoserver main.cpp ${GENERATED_SOURCES})
  22. target_link_libraries(echoserver grpc++ ${Protobuf_LIBRARIES})
  23. target_include_directories(echoserver PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
  24. add_dependencies(echoserver echoserver_src_generation)