diff --git a/cpp/helloworld/Makefile b/cpp/helloworld/Makefile
index bfa9c0817cfa9dbdf2060b605d7e93187f2c3d4c..3812689f31e37cc9208d75ba54a253520c1ab83a 100644
--- a/cpp/helloworld/Makefile
+++ b/cpp/helloworld/Makefile
@@ -43,14 +43,17 @@ vpath %.proto $(PROTOS_PATH)
 
 all: system-check greeter_client greeter_server
 
-greeter_client: helloworld.pb.o greeter_client.o
+greeter_client: helloworld.grpc.pb.o helloworld.pb.o greeter_client.o
 	$(CXX) $^ $(LDFLAGS) -o $@
 
 greeter_server: helloworld.pb.o greeter_server.o
 	$(CXX) $^ $(LDFLAGS) -o $@
 
+%.grpc.pb.cc: %.proto
+	$(PROTOC) -I $(PROTOS_PATH) --grpc_out=. --plugin=protoc-gen-grpc=$(GRPC_CPP_PLUGIN_PATH) $<
+
 %.pb.cc: %.proto
-	$(PROTOC) -I $(PROTOS_PATH) --cpp_out=. --grpc_out=. --plugin=protoc-gen-grpc=$(GRPC_CPP_PLUGIN_PATH) $<
+	$(PROTOC) -I $(PROTOS_PATH) --cpp_out=. $<
 
 clean:
 	rm -f *.o *.pb.cc *.pb.h greeter_client greeter_server
diff --git a/cpp/helloworld/greeter_client.cc b/cpp/helloworld/greeter_client.cc
index 0cec4a36a14830b5debf0b919a52bc5bd50fcbdc..4776cf9d3d033c4c9fbf3aeb0f9def279936b4e6 100644
--- a/cpp/helloworld/greeter_client.cc
+++ b/cpp/helloworld/greeter_client.cc
@@ -42,7 +42,7 @@
 #include <grpc++/create_channel.h>
 #include <grpc++/credentials.h>
 #include <grpc++/status.h>
-#include "helloworld.pb.h"
+#include "helloworld.grpc.pb.h"
 
 using grpc::ChannelArguments;
 using grpc::ChannelInterface;
diff --git a/cpp/helloworld/greeter_server.cc b/cpp/helloworld/greeter_server.cc
index e7f355f4cef8f6b6dc8ef4c90d60855bcda1b1f7..a090075d9f25a99b83fba7d596213ec9b157098f 100644
--- a/cpp/helloworld/greeter_server.cc
+++ b/cpp/helloworld/greeter_server.cc
@@ -41,7 +41,7 @@
 #include <grpc++/server_context.h>
 #include <grpc++/server_credentials.h>
 #include <grpc++/status.h>
-#include "helloworld.pb.h"
+#include "helloworld.grpc.pb.h"
 
 using grpc::Server;
 using grpc::ServerBuilder;
diff --git a/cpp/route_guide/Makefile b/cpp/route_guide/Makefile
index ac0b0344c66a1977a1e5084e6e539e96239b98e4..85d7290df1e799ebb3eeb42aec780506f5359ed1 100644
--- a/cpp/route_guide/Makefile
+++ b/cpp/route_guide/Makefile
@@ -43,14 +43,17 @@ vpath %.proto $(PROTOS_PATH)
 
 all: system-check route_guide_client route_guide_server
 
-route_guide_client: route_guide.pb.o route_guide_client.o helper.o
+route_guide_client: route_guide.grpc.pb.o route_guide.pb.o route_guide_client.o helper.o
 	$(CXX) $^ $(LDFLAGS) -o $@
 
-route_guide_server: route_guide.pb.o route_guide_server.o helper.o
+route_guide_server: route_guide.grpc.pb.o route_guide.pb.o route_guide_server.o helper.o
 	$(CXX) $^ $(LDFLAGS) -o $@
 
+%.grpc.pb.cc: %.proto
+	$(PROTOC) -I $(PROTOS_PATH) --grpc_out=. --plugin=protoc-gen-grpc=$(GRPC_CPP_PLUGIN_PATH) $<
+
 %.pb.cc: %.proto
-	$(PROTOC) -I $(PROTOS_PATH) --cpp_out=. --grpc_out=. --plugin=protoc-gen-grpc=$(GRPC_CPP_PLUGIN_PATH) $<
+	$(PROTOC) -I $(PROTOS_PATH) --cpp_out=. $<
 
 clean:
 	rm -f *.o *.pb.cc *.pb.h route_guide_client route_guide_server
diff --git a/cpp/route_guide/helper.cc b/cpp/route_guide/helper.cc
index d1478464636f58506108ed2c573eebe764d81d15..c2415afdf7253562a569ab0bf4016dd89c2b3faf 100644
--- a/cpp/route_guide/helper.cc
+++ b/cpp/route_guide/helper.cc
@@ -38,7 +38,7 @@
 #include <sstream>
 #include <string>
 #include <vector>
-#include "route_guide.pb.h"
+#include "route_guide.grpc.pb.h"
 
 namespace examples {
 
diff --git a/cpp/route_guide/route_guide_client.cc b/cpp/route_guide/route_guide_client.cc
index d2f7673411f5135650b052f0a210af1b73001af3..e70207be9fa19301c11371eb58c1232e72778d43 100644
--- a/cpp/route_guide/route_guide_client.cc
+++ b/cpp/route_guide/route_guide_client.cc
@@ -47,7 +47,7 @@
 #include <grpc++/status.h>
 #include <grpc++/stream.h>
 #include "helper.h"
-#include "route_guide.pb.h"
+#include "route_guide.grpc.pb.h"
 
 using grpc::ChannelArguments;
 using grpc::ChannelInterface;
diff --git a/cpp/route_guide/route_guide_server.cc b/cpp/route_guide/route_guide_server.cc
index edef04841973c436db2d0847ddc6f6ce84e1e7bb..afa3fea11c4d4082089aa4195a8ff1faa8c298da 100644
--- a/cpp/route_guide/route_guide_server.cc
+++ b/cpp/route_guide/route_guide_server.cc
@@ -46,7 +46,7 @@
 #include <grpc++/status.h>
 #include <grpc++/stream.h>
 #include "helper.h"
-#include "route_guide.pb.h"
+#include "route_guide.grpc.pb.h"
 
 using grpc::Server;
 using grpc::ServerBuilder;