aboutsummaryrefslogtreecommitdiffhomepage
path: root/examples/cpp/helloworld/CMakeLists.txt
diff options
context:
space:
mode:
authorGravatar Nicolas "Pixel" Noble <pixel@nobis-crew.org>2016-08-02 23:15:44 +0200
committerGravatar Nicolas "Pixel" Noble <pixel@nobis-crew.org>2016-08-02 23:15:44 +0200
commit18c71117b0d90f5e7d12a5473791eb5054a34b9f (patch)
tree08df5dc7355bc26695ce956aa91f9ffc985903c1 /examples/cpp/helloworld/CMakeLists.txt
parentacbd8675a283a51a409991ac1393294c9af726e7 (diff)
parent5c3877e70f97e12242326fe628a2ced2d97995be (diff)
Merge branch 'master' of https://github.com/grpc/grpc into what-the-fuzz
Diffstat (limited to 'examples/cpp/helloworld/CMakeLists.txt')
-rw-r--r--examples/cpp/helloworld/CMakeLists.txt49
1 files changed, 49 insertions, 0 deletions
diff --git a/examples/cpp/helloworld/CMakeLists.txt b/examples/cpp/helloworld/CMakeLists.txt
new file mode 100644
index 0000000000..8f098c91a6
--- /dev/null
+++ b/examples/cpp/helloworld/CMakeLists.txt
@@ -0,0 +1,49 @@
+# Minimum CMake required
+cmake_minimum_required(VERSION 2.8)
+
+# Project
+project(HelloWorld CXX)
+
+# Protobuf
+set(protobuf_MODULE_COMPATIBLE TRUE)
+find_package(protobuf CONFIG REQUIRED)
+message(STATUS "Using protobuf ${protobuf_VERSION}")
+
+# gRPC
+find_package(gRPC CONFIG REQUIRED)
+message(STATUS "Using gRPC ${gRPC_VERSION}")
+
+# gRPC C++ plugin
+get_target_property(gRPC_CPP_PLUGIN_EXECUTABLE gRPC::grpc_cpp_plugin
+ IMPORTED_LOCATION_RELEASE)
+
+# Proto file
+get_filename_component(hw_proto "../../protos/helloworld.proto" ABSOLUTE)
+get_filename_component(hw_proto_path "${hw_proto}" PATH)
+
+# Generated sources
+protobuf_generate_cpp(hw_proto_srcs hw_proto_hdrs "${hw_proto}")
+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_grpc_srcs}" "${hw_grpc_hdrs}"
+ COMMAND protobuf::protoc
+ ARGS --grpc_out "${CMAKE_CURRENT_BINARY_DIR}" -I "${hw_proto_path}"
+ --plugin=protoc-gen-grpc="${gRPC_CPP_PLUGIN_EXECUTABLE}"
+ "${hw_proto}"
+ DEPENDS "${hw_proto}")
+
+# Generated include directory
+include_directories("${CMAKE_CURRENT_BINARY_DIR}")
+
+# Targets greeter_[async_](client|server)
+foreach(_target
+ greeter_client greeter_server
+ greeter_async_client greeter_async_server)
+ add_executable(${_target} "${_target}.cc"
+ ${hw_proto_srcs}
+ ${hw_grpc_srcs})
+ target_link_libraries(${_target}
+ protobuf::libprotobuf
+ gRPC::grpc++_unsecure)
+endforeach()