2016-09-16 4 views
3

Мне нужно изменить Makefile таким образом, чтобы промежуточные файлы с расширением .cc были перемещены в .cpp перед созданием файлов .o.. Мой модифицированный Makefile выглядит ниже.Переименовать сгенерированные файлы в Makefile

PROTOC=protoc 
all: client_grpc pb 

client_grpc: abc.pb.o abc.grpc.pb.o client_grpc.o 
    $(CXX) $^ $(LDFLAGS) -o [email protected] 

pb: %.pb.cc 
    mv $^ [email protected] 

%.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 является компилятор, который генерирует .cc файлы. Как сделать цели, чтобы после генерации файлов .cc они переместились на .cpp, а затем client_grpc построен с использованием файлов .cpp?

+1

Просто интересно, если есть какая-либо конкретная причина, почему вы должны переименовать .cc файлы .cpp файлов? Вы можете просто скомпилировать файлы .cc непосредственно в файлы .o, если первый - это реальный код C++. –

+0

Существует еще один инструмент, который идентифицирует только файлы .cpp. – damleak

ответ

2

Обычный способ сделать это будет иметь свои правила производят .cpp файлов:

%.pb.cpp: %.proto 
     $(PROTOC) --cpp_out=. $< 
     mv $*.pb.cc $*.pb.cpp 
Смежные вопросы