Skip to content
Advertisement

Rename generated files in Makefile

I have to modify a Makefile such that the intermediate files with extension .cc are moved to .cpp before building the .o. files. My modified Makefile looks like below.

PROTOC=protoc
all: client_grpc pb

client_grpc: abc.pb.o abc.grpc.pb.o client_grpc.o
  $(CXX) $^ $(LDFLAGS) -o $@

pb: %.pb.cc
  mv $^ $@ 

%.grpc.pb.cc: %.proto
  $(PROTOC) --grpc_out=. --plugin=protoc-gen-grpc=$(GRPC_CPP_PLUGIN_PATH) $<

%.pb.cc: %.proto
  $(PROTOC) --cpp_out=. $<

clean:
  rm -f *.o *.pb.cc *.pb.h client_gqegrpc

protoc is a compiler that generates .cc files. How to make targets so that after generating the .cc files those are move to .cpp and then the client_grpc is built using the .cpp files ?

Advertisement

Answer

The usual way to do this would be to have your rule produce .cpp files:

%.pb.cpp: %.proto
        $(PROTOC) --cpp_out=. $<
        mv $*.pb.cc $*.pb.cpp
User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement