| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | # Copyright 2018 gRPC authors.## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# You may obtain a copy of the License at##     http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.# See the License for the specific language governing permissions and# limitations under the License.## cmake build file for C++ helloworld example.# Assumes protobuf and gRPC have been installed using cmake.# See cmake_externalproject/CMakeLists.txt for all-in-one cmake build# that automatically builds all the dependencies before building helloworld.cmake_minimum_required(VERSION 3.5.1)project(HelloWorld C CXX)include(../cmake/common.cmake)# Proto fileget_filename_component(hw_proto "../../protos/helloworld.proto" ABSOLUTE)get_filename_component(hw_proto_path "${hw_proto}" PATH)# Generated sourcesset(hw_proto_srcs "${CMAKE_CURRENT_BINARY_DIR}/helloworld.pb.cc")set(hw_proto_hdrs "${CMAKE_CURRENT_BINARY_DIR}/helloworld.pb.h")set(hw_grpc_srcs "${CMAKE_CURRENT_BINARY_DIR}/helloworld.grpc.pb.cc")set(hw_grpc_hdrs "${CMAKE_CURRENT_BINARY_DIR}/helloworld.grpc.pb.h")add_custom_command(      OUTPUT "${hw_proto_srcs}" "${hw_proto_hdrs}" "${hw_grpc_srcs}" "${hw_grpc_hdrs}"      COMMAND ${_PROTOBUF_PROTOC}      ARGS --grpc_out "${CMAKE_CURRENT_BINARY_DIR}"        --cpp_out "${CMAKE_CURRENT_BINARY_DIR}"        -I "${hw_proto_path}"        --plugin=protoc-gen-grpc="${_GRPC_CPP_PLUGIN_EXECUTABLE}"        "${hw_proto}"      DEPENDS "${hw_proto}")# Include generated *.pb.h filesinclude_directories("${CMAKE_CURRENT_BINARY_DIR}")# hw_grpc_protoadd_library(hw_grpc_proto  ${hw_grpc_srcs}  ${hw_grpc_hdrs}  ${hw_proto_srcs}  ${hw_proto_hdrs})target_link_libraries(hw_grpc_proto  ${_REFLECTION}  ${_GRPC_GRPCPP}  ${_PROTOBUF_LIBPROTOBUF})# Targets greeter_[async_](client|server)foreach(_target  greeter_client greeter_server  greeter_async_client greeter_async_client2 greeter_async_server)  add_executable(${_target} "${_target}.cc")  target_link_libraries(${_target}    hw_grpc_proto    ${_REFLECTION}    ${_GRPC_GRPCPP}    ${_PROTOBUF_LIBPROTOBUF})endforeach()
 |