Protocol buffers 无法让automake使用google协议缓冲区将.proto文件生成为.pb.cc文件

Protocol buffers 无法让automake使用google协议缓冲区将.proto文件生成为.pb.cc文件,protocol-buffers,automake,Protocol Buffers,Automake,我一直在尝试让automake自动确定如何从google protocol buffers.proto描述构建.pb.cc和.pb.hh文件,但没有成功 我试着穿上它,但还是不起作用 以下是my Makefile.am的摘录: PROTOC=@ac_protoc_cmd@ %.pb.h %.pb.cc: %.proto $(PROTOC) --proto_dir=$(srcdir)/proto --cpp_out=$(srcdir) $(srcdir)/proto/$< libt

我一直在尝试让automake自动确定如何从google protocol buffers.proto描述构建.pb.cc和.pb.hh文件,但没有成功

我试着穿上它,但还是不起作用

以下是my Makefile.am的摘录:

PROTOC=@ac_protoc_cmd@
%.pb.h %.pb.cc: %.proto
    $(PROTOC) --proto_dir=$(srcdir)/proto --cpp_out=$(srcdir) $(srcdir)/proto/$<

libtass_a_SOURCES = \
    $(srcdir)/tass.pb.cc

nobase_include_HEADERS = \
    $(srcdir)/tass.pb.h
ac_proto_cmd在检查GPB依赖项时由configure.ac填充到protoc二进制文件的路径。我已经验证了它的格式是“/opt/common/protobuf/-VERSION-/bin/protoc”,这是我保存GPB库的地方

我试图将我的.proto文件保存在src/proto中,并让protoc将编译好的cc和h文件输出到src中。然而,即使将我的.proto文件移动到src/中也不起作用,所以我认为这不是问题所在。据我所知,make甚至没有尝试调用protoc,因此我不确定make是否正确解释了该规则


提前感谢您在这方面的帮助。

没有名为
--proto_dir
的protoc参数。我想您的意思是
--proto_path

这里的问题是构建依赖关系,因为automake会将依赖关系作为编译的副作用来查找(请参阅了解解决方法的解释),因此您必须添加这一行:

BUILT_SOURCES = $(srcdir)/tass.pb.cc
BUILT_SOURCES = $(srcdir)/tass.pb.cc