diff options
author | Nicolas Noble <nicolasnoble@users.noreply.github.com> | 2016-07-29 15:49:54 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-29 15:49:54 -0700 |
commit | 2507fef7379aa54cbced074f1b1e7ba3b53eae26 (patch) | |
tree | 419d73be87bbb65123d6892af836b2a2031ade29 /examples | |
parent | 5bb44e93e1ad0fdbc21ab16d5c296875bdca1d45 (diff) | |
parent | dd3314854c4c527d1b69a0b0516ea6140fb1ea52 (diff) |
Merge pull request #7553 from podsvirov/topic-cmake-template
CMake Project Improvements
Diffstat (limited to 'examples')
-rw-r--r-- | examples/cpp/helloworld/CMakeLists.txt | 49 |
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()
|