在 Makefile 中重命名生成的文件

Posted

技术标签:

【中文标题】在 Makefile 中重命名生成的文件【英文标题】:Rename generated files in Makefile 【发布时间】:2016-09-16 02:51:44 【问题描述】:

我必须修改 Makefile,以便在构建 .o. 文件之前将扩展名为 .cc 的中间文件移动到 .cpp。我修改后的 Makefile 如下所示。

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 是一个生成.cc 文件的编译器。如何制作目标,以便在生成 .cc 文件后将其移动到 .cpp,然后使用 .cpp 文件构建 client_grpc

【问题讨论】:

只是好奇,是否有任何特殊原因需要将 .cc 文件重命名为 .cpp 文件?你可以直接将.cc文件编译成.o文件,只要前者是真正的c++代码。 还有一个工具可以只识别 .cpp 文件。 【参考方案1】:

执行此操作的通常方法是让您的规则生成 .cpp 文件:

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

【讨论】:

以上是关于在 Makefile 中重命名生成的文件的主要内容,如果未能解决你的问题,请参考以下文章

在火花中重命名 S3 文件是不是会将文件加载到内存中

如何在项目中重命名 Rails 控制器和模型

在 itunesconnect 中重命名应用程序 - 迁移数据?

在 Xcode 中重命名或重构文件

如何在 Emacs 中重命名打开的文件?

如何在 .NET 中重命名文件?